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

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

SELECT Name = TRIM(Name) FROM dbo.Customer;
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
140
0
328 779
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

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

это самый простой способ сделать это, просто не забудьте указать псевдоним для возвращаемого столбца

Miles 08.10.2008 19:10

@Miles - я добавил псевдоним для полноты картины.

Ben Hoffstein 08.10.2008 19:29

Я понимаю, что это правильный способ обрезки значения. но можете ли вы объяснить, зачем использовать и LTRIM, и RTRIM, когда вместо этого мы могли бы использовать только TRIM?

Code Buster 15.04.2015 10:35

@CodeBuster: SQL Server не имеет функции TRIM, определенной даже в версии 2014 года.

alextansc 08.10.2015 12:02

Обратите внимание, что LTRIM и RTRIM обрабатывают только пробелы, вам придется самостоятельно удалить другие символы пустой, такие как табуляция и перевод строки.

Siu Pang Tommy Choi 15.07.2016 03:36

SQL Server теперь имеет TRIM в версии 2017. docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-s‌ ql

goodeye 15.06.2017 22:23

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

SELECT RTRIM(Names) FROM Customer

Для обрезки слева используйте:

SELECT LTRIM(Names) FROM Customer

Для обрезки с обеих сторон используйте:

SELECT LTRIM(RTRIM(Names)) FROM Customer

Кстати, какая возможная причина могла быть у Microsoft для включения функций LTRIM и RTRIM без TRIM? Это странно.

Ben Hoffstein 07.10.2008 22:06

Потому что это избыточно. Вы можете сделать то же самое с LTRIM (RTRIM (var)).

Kibbee 08.10.2008 03:11

Да, но это два вызова функций. Можно сказать, что все они избыточны, поскольку в TSQL есть CHARINDEX и SUBSTRING, но это идиотский взгляд на это.

Ben Hoffstein 08.10.2008 18:02

Это совсем не лишнее. Отсутствие единственной функции под названием TRIM ложится синтаксической нагрузкой на пользователя.

joelc 29.08.2014 21:28

Вероятно, это был недосмотр или одна из тех функций, которые были упразднены, потому что каждая функция начинается с -100 баллов (что на самом деле просто приводит к несогласованным наборам функций вместо приоритетных наборов функций, ИМХО).

siride 09.04.2015 16:32

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

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, за исключением того, что он входит в состав продукта, поставляемого вместе с базой данных.

siride 09.04.2015 16:31

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)

Другие вопросы по теме