В SQL Server 2017 вы можете использовать этот синтаксис, но не в более ранних версиях:
SELECT Name = TRIM(Name) FROM dbo.Customer;


SELECT LTRIM(RTRIM(Names)) AS Names FROM Customer
@Miles - я добавил псевдоним для полноты картины.
Я понимаю, что это правильный способ обрезки значения. но можете ли вы объяснить, зачем использовать и LTRIM, и RTRIM, когда вместо этого мы могли бы использовать только TRIM?
@CodeBuster: SQL Server не имеет функции TRIM, определенной даже в версии 2014 года.
Обратите внимание, что LTRIM и RTRIM обрабатывают только пробелы, вам придется самостоятельно удалить другие символы пустой, такие как табуляция и перевод строки.
SQL Server теперь имеет TRIM в версии 2017. docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-s ql
Чтобы обрезать справа, используйте:
SELECT RTRIM(Names) FROM Customer
Для обрезки слева используйте:
SELECT LTRIM(Names) FROM Customer
Для обрезки с обеих сторон используйте:
SELECT LTRIM(RTRIM(Names)) FROM Customer
Кстати, какая возможная причина могла быть у Microsoft для включения функций LTRIM и RTRIM без TRIM? Это странно.
Потому что это избыточно. Вы можете сделать то же самое с LTRIM (RTRIM (var)).
Да, но это два вызова функций. Можно сказать, что все они избыточны, поскольку в TSQL есть CHARINDEX и SUBSTRING, но это идиотский взгляд на это.
Это совсем не лишнее. Отсутствие единственной функции под названием TRIM ложится синтаксической нагрузкой на пользователя.
Вероятно, это был недосмотр или одна из тех функций, которые были упразднены, потому что каждая функция начинается с -100 баллов (что на самом деле просто приводит к несогласованным наборам функций вместо приоритетных наборов функций, ИМХО).
Я предполагаю, что это разовое упражнение по очистке данных. После этого убедитесь, что вы добавили ограничения базы данных, чтобы предотвратить появление неверных данных в будущем, например.
ALTER TABLE Customer ADD
CONSTRAINT customer_names__whitespace
CHECK (
Names NOT LIKE ' %'
AND Names NOT LIKE '% '
AND Names NOT LIKE '% %'
);
Также рассмотрите возможность запрета других символов (табуляции, возврата каретки, перевода строки и т. д.), Которые могут вызвать проблемы.
Также может быть подходящее время разделить эти имена на family_name, first_name и т. д. :)
в sql server 2008 r2 с выражением ssis у нас есть функция обрезки.
Службы интеграции 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".
Это не имеет ничего общего с MS SQL, за исключением того, что он входит в состав продукта, поставляемого вместе с базой данных.
SELECT LTRIM(RTRIM(Replace(Replace(Replace(name,' ',' '),CHAR(13), ' '),char(10), ' ')))
from author
Расширенная версия «ЗАМЕНИТЬ»:
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]
Чтобы обрезать любой набор символов от начала и до конца строки, вы можете выполнить следующий код, где @TrimPattern определяет символы, которые нужно обрезать. В этом примере удаляются символы пробела, табуляции, LF и CR:
Объявите @Test nvarchar (50) = Concat ('', char (9), char (13), char (10), '', 'TEST', '', char (9), char (10), char ( 13), '', 'Тест', '', char (9), '', char (9), char (13), '')
ОБЪЯВЛЕНИЕ @TrimPattern nvarchar (max) = '% [^' + char (9) + char (13) + char (10) + ']%'
ВЫБРАТЬ ПОДСТРОКУ (@Test, PATINDEX (@TrimPattern, @Test), LEN (@Test) - PATINDEX (@TrimPattern, @Test) - PATINDEX (@TrimPattern, LTRIM (REVERSE (@Test))) + 2)
это самый простой способ сделать это, просто не забудьте указать псевдоним для возвращаемого столбца