Як обрізати рядок у SQL Server?


Відповіді:


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

3
це найпростіший спосіб зробити це, просто пам’ятайте, що псевдонім ваш стовпець повертається
Майлз

1
@Miles - я додав псевдонім для повноти.
Бен Гофштейн

2
Я розумію, що це правильний спосіб використання обрізки значення. але ви можете пояснити, чому використовувати LTRIM і RTRIM, коли ми могли використати лише TRIM?
Code Buster

6
@CodeBuster: навіть у версії 2014 року на SQL Server не визначено функції TRIM.
alextansc

7
Тепер у SQL Server є TRIM у версії 2017 року. docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-sql
goodeye

64

Щоб обрізати праворуч, використовуйте:

SELECT RTRIM(Names) FROM Customer

Щоб обрізати зліва, використовуйте:

SELECT LTRIM(Names) FROM Customer

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

SELECT LTRIM(RTRIM(Names)) FROM Customer

5
Між іншим, яка можлива причина Microsoft може включати функції LTRIM та RTRIM без TRIM? Це своєрідно.
Бен Гофштейн

Тому що це зайве. Те ж саме можна зробити і з LTRIM (RTRIM (var)).
Кіббі

52
Так, але це два дзвінки функції. Можна сказати, що вони все зайві, оскільки TSQL має CHARINDEX і SUBSTRING, але це ідіотичний спосіб поглянути на це.
Бен Гофштейн

9
Це зовсім не зайве. Якщо не запропоновано жодної функції під назвою TRIM, синтаксичне навантаження на користувача.
joelc

3
Ймовірно, це було недоглядом або однією з тих функцій, яку застосували, оскільки кожна функція починається з -100 балів (що насправді призводить до невідповідних наборів функцій замість пріоритетних наборів функцій, IMHO).
siride

7

Я припускаю, що це разове вправляння даних. Закінчивши, переконайтеся, що ви додаєте обмеження в базу даних, щоб у майбутньому не допустити поганих даних

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

0

у сервері sql 2008 r2 з виразом ssis ми маємо функцію обрізки.

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

Ви можете знайти повний опис за цим посиланням

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

але ця функція сама по собі має обмеження, які також згадує msdn на цій сторінці. але це в sql сервері 2008 r2

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

3
Це не має нічого спільного з MS SQL, за винятком того, що він знаходиться в продукті в комплекті з базою даних.
siride

-1

Розширена версія "ЗАМІНИ":

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(REPLACE("Put in your Field name", ' ',' '))),'''',''), CHAR(9), ''), CHAR(10), ''), CHAR(13), ''), CHAR(160), '') [CorrValue]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.