Возможно ли обрезать все значения в столбце в одном операторе?

#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,'')))