У меня есть таблица с двумя полями (страны и коды ISO):
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. 'AF'(without quotes)
В некоторых строках второе поле имеет пробелы в начале и / или в конце, что влияет на запросы.
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. ' AF' (without quotes but with that space in front)
Есть ли способ (в SQL) пройти по таблице и найти / заменить пробел в field2?
Ответы:
Вы ищете TRIM .
источник
Общий ответ, который я составил из ваших ответов и из других ссылок, и он сработал для меня, и я написал его в комментарии:
и т.п.
Поскольку trim () не удаляет все пробелы, лучше заменить все желаемые пробелы, чем обрезать их.
Надеюсь, я смогу помочь вам поделиться своим ответом :)
источник
Прежде чем использовать это решение, ознакомьтесь с вариантом использования:
обрезка не работает при выполнении запроса выбора
Это работает
Хотя это не
источник
TRIM()
отлично работает для меня вSELECT
заявлении, мне действительно любопытно, почему этот ответ получил так много голосов. Вы используете MySQL? Какая версия?SELECT CONCAT('"', TRIM(" hello world "), '"') AS `trimmed value` FROM DUAL
дает желаемый результат"hello world"
. В то время как вариант замены опасно удаляет пробел в качестве разделителя слов:SELECT CONCAT('"', REPLACE(" hello world ", ' ', '')) AS `replaced value` FROM DUAL
дает нежелательный результат"helloworld"
Чтобы быть ясным, TRIM по умолчанию удаляет только пробелы (не все пробелы). Вот документ: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim
источник
Кажется, что ни один из текущих ответов не удалит 100% пробелов в начале и в конце строки.
Как упоминалось в других сообщениях, по умолчанию
TRIM
удаляются только пробелы - не вкладки, каналы и т. Д. КомбинацияTRIM
s, определяющая другие символы пробела, может обеспечить ограниченное улучшение, напримерTRIM(BOTH '\r' FROM TRIM(BOTH '\n' FROM TRIM(BOTH '\f' FROM TRIM(BOTH '\t' FROM TRIM(txt)))))
. Но проблема с этим подходом заключается в том, что для конкретного может быть указан только один символ,TRIM
и эти символы удаляются только в начале и в конце. Поэтому, если обрезаемая строка выглядит примерно так\t \t \t \t
(например, альтернативные пробелы и символы табуляции), большеTRIM
потребуется s - и в общем случае это может продолжаться бесконечно.Для облегченного решения должна быть возможность написать простую функцию, определяемую пользователем (UDF), для выполнения работы путем перебора символов в начале и в конце строки. Но я не собираюсь этого делать ... поскольку я уже написал более тяжелый заменитель регулярных выражений, который также может выполнять эту работу - и может оказаться полезным по другим причинам, как описано в этом сообщении в блоге .
демонстрация
Демо-версия Rextester . В частности, последняя строка показывает, что другие методы не работают, но метод регулярного выражения работает успешно.
Функция :
Использование:
источник
Этот оператор удалит и обновит содержимое поля вашей базы данных.
Чтобы удалить пробелы в левой части значения поля
ОБНОВЛЕНИЕ таблицы SET field1 = LTRIM (field1);
ех. UPDATE член SET firstName = LTRIM (firstName);
Чтобы удалить пробелы в правой части значения поля
ОБНОВЛЕНИЕ таблицы SETfield1 = RTRIM (field1);
ех. UPDATE член SET firstName = RTRIM (firstName);
источник
Мне нужно было обрезать значения в столбце первичного ключа, в котором были имя и фамилия, поэтому я не хотел обрезать все пробелы, так как это удалило бы пробел между именем и фамилией, который мне нужно было сохранить. Для меня сработало ...
или
или
Обратите внимание, что первый экземпляр FIELD заключен в одинарные кавычки, а второй - вообще не в кавычках. Мне пришлось сделать это таким образом, иначе я получил синтаксическую ошибку, говоря, что это дублированный первичный ключ, когда у меня оба были заключены в кавычки.
источник
Если вам нужно использовать обрезку в запросе выбора, вы также можете использовать регулярные выражения
возвращать строки с полем типа 'query-string'
источник
вы можете использовать ltrim или rtrim для очистки пробелов справа или слева или строки.
источник
Вы можете использовать следующий sql, UPDATE
TABLE
SETColumn
= replace (Column, '', '')источник
Я знаю, что он уже принят, но для таких людей, как я, которые ищут «удалить ВСЕ пробелы» (а не только в начале и конце строки):
РЕДАКТИРОВАТЬ 2019/6/20: Да, это нехорошо. Функция возвращает часть строки с момента, "когда пробел между символами возник впервые". Итак, я предполагаю, что при этом удаляются начальные и конечные пробелы и возвращается первое слово:
источник