#sql #tsql #trim
#sql #tsql #обрезать
Вопрос:
У меня есть таблица в базе данных (MS) SQL, в которой есть столбец Id (identity, int) и столбец Name (varchar(250)). Однако значения в столбце name содержат (довольно случайные) начальные и конечные пробелы, поскольку я думаю, что они были вырезаны и вставлены из «чего-то другого» (понятия не имею, из чего!).
Возможно ли в T-SQL выполнить следующее:
update MyTable set Name = trim(name)
и пусть он обновит все столбцы имен с помощью урезанного значения?
Ответ №1:
MS SQL не имеет функции обрезки. Вам нужно будет использовать rTrim и lTrim вместе.
update MyTable set Name = lTrim(rTrim(name))
Ответ №2:
Попробуйте
update MyTable set Name = LTRIM(RTRIM((name))
Ответ №3:
Также, начиная с SQL Server 2017 (14.x) и более поздних версий, есть функция TRIM(), так что;
UPDATE MyTable set Name = TRIM(name)
Будет работать нормально. Или в моем случае я также хочу обнулить пустые поля после обрезки.
UPDATE MyTable set Name = NULLIF(TRIM(name), '')
Ответ №4:
Вы могли бы попробовать это:
UPDATE MyTable
SET Name = LTRIM(RTRIM(Name))
Посмотрите здесь, как создать функцию внутри вашей базы данных, чтобы использовать ее быстрее
Комментарии:
1. Спасибо @Bazza ответ появился первым, но спасибо за дополнительную информацию.
Ответ №5:
Попробуйте это:
UPDATE [table] SET [column1] = REPLACE([column1],'i:0#.w|',' ')
Комментарии:
1. Это единственное средство, помогающее заменить данный символ во всех значениях в столбце. Не могу поверить, что TRIM работает только с фиксированными строками…
Ответ №6:
В SQL Server есть только RTRIM
и LTRIM
, но вы можете использовать их оба вместе:
update MyTable set Name = RTRIM(LTRIM((name))
Ответ №7:
Не совсем — TRIM()
функция недоступна, поэтому вам нужно использовать RTRIM()
и LTRIM()
(обрезка вправо и влево соответственно):
UPDATE MyTable set Name = rtrim(ltrim(name))
Ответ №8:
проверьте isnull, если вы хотите, чтобы пустая строка возвращалась в случае null
UPDATE MyTable set Name = rtrim(ltrim(IsNull(name,'')))