Как обрезать строку в SQL Server?

В SQL Server 2017 вы можете использовать этот синтаксис, но не в более ранних версиях:

SELECT Name = TRIM(Name) FROM dbo.Customer;

Ответ 1

SELECT LTRIM(RTRIM(Names)) AS Names FROM Customer

Ответ 2

Чтобы отрегулировать справа, используйте:

SELECT RTRIM(Names) FROM Customer

Чтобы отрегулировать слева, используйте:

SELECT LTRIM(Names) FROM Customer

Чтобы обрезать обе стороны, используйте:

SELECT LTRIM(RTRIM(Names)) FROM Customer

Ответ 3

Я предполагаю, что это одноразовое упражнение по очистке данных. После этого убедитесь, что вы добавили ограничения базы данных для предотвращения плохих данных в будущем, например.

ALTER TABLE Customer ADD
   CONSTRAINT customer_names__whitespace
      CHECK (
             Names NOT LIKE ' %'
             AND Names NOT LIKE '% '
             AND Names NOT LIKE '%  %'
            );

Также рассмотрите возможность запрещения других символов (вкладка, возврат каретки, фид строки и т.д.), которые могут вызвать проблемы.

Также может быть полезно разбить эти имена на family_name, first_name и т.д.:)

Ответ 4

SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,'   ',' '),CHAR(13), ' '),char(10), ' ')))
from author

Ответ 5

в sql server 2008 r2 с выражением ssis у нас есть функция trim.

Службы интеграции SQL Server (SSIS) являются компонентом программного обеспечения базы данных Microsoft SQL Server, которое может использоваться для выполнения широкого круга задач переноса данных.

вы можете найти полное описание по этой ссылке

http://msdn.microsoft.com/en-us/library/ms139947.aspx

но эта функция имеет некоторые ограничения сама по себе, которые также упоминаются msdn на этой странице. но это находится в sql server 2008 r2

TRIM("   New York   ") .The return result is "New York".

Ответ 6

Расширенная версия "ЗАМЕНА":

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]