Видаліть проміжні простори та оновлення у стовпцях на SQL Server


147

Я маю пробіли у стовпці в таблиці SQL Server під назвою Company Name.

Усі дані у цьому стовпці мають пробіли.

Я хочу видалити всі ці дані, і я хочу мати дані без пробілів.

Назва компанії - це як "Amit Tech Corp "

Я хочу, щоб ім’я компанії було "Amit Tech Corp"

Відповіді:


296

Спробуйте SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - видаляє будь-які провідні пробіли з лівого боку рядка

RTRIM - видаляє будь-які пробіли справа

Наприклад:

update table set CompanyName = LTRIM(RTRIM(CompanyName))

12
Слід зазначити, що TRIM зараз підтримується методом у SQL Server 2017+.
DJ Sipe

3
Я використовую SQL Management Studio v17.8.1, і коли я отримую Intellisense для функції TRIM, коли я його виконую, він говорить, що це невірно. Я повинен був використовувати код вище. Дивно.
DesertFoxAZ

2
@DesertFoxAZ Версія SQL Management Studio не є версією SQL Server
Jonatan Dragon

30

Щоб просто обрізати простір, який слід прокласти

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Однак якщо ви хочете обрізати всі провідні та кінцеві простори, скористайтеся цим

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))

15

Ну ось приємний сценарій для TRIM всіх стовпців varchar на столі динамічно:

--Just change table name
declare @MyTable varchar(100)
set @MyTable = 'MyTable'

--temp table to get column names and a row id
select column_name, ROW_NUMBER() OVER(ORDER BY column_name) as id into #tempcols from INFORMATION_SCHEMA.COLUMNS 
WHERE   DATA_TYPE IN ('varchar', 'nvarchar') and TABLE_NAME = @MyTable

declare @tri int
select @tri = count(*) from #tempcols
declare @i int
select @i = 0
declare @trimmer nvarchar(max)
declare @comma varchar(1)
set @comma = ', '

--Build Update query
select @trimmer = 'UPDATE [dbo].[' + @MyTable + '] SET '

WHILE @i <= @tri 
BEGIN

    IF (@i = @tri)
        BEGIN
        set @comma = ''
        END
    SELECT  @trimmer = @trimmer + CHAR(10)+ '[' + COLUMN_NAME + '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))'+@comma
    FROM    #tempcols
    where id = @i

    select @i = @i+1
END

--execute the entire query
EXEC sp_executesql @trimmer

drop table #tempcols


2

Використовуйте функцію TRIM SQL.

Якщо ви використовуєте SQL Server, спробуйте:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

2

SQL Server не підтримує функцію Trim ().

Але ви можете використовувати LTRIM () для видалення провідних пробілів, а RTRIM () для видалення пробілів.

може використовувати його як LTRIM (RTRIM (ColumnName)) для видалення обох.

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))

2

Якщо ви використовуєте сервер SQL (починаючи з vNext) або база даних Azure SQL, ви можете використовувати наступний запит.

SELECT TRIM(ColumnName) from TableName;

Для інших баз даних SQL SERVER ви можете використовувати наступний запит.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - видаляє пробіли зліва

приклад: select LTRIM(' test ') as trim='test '

RTRIM - видаляє пробіли справа

приклад: select RTRIM(' test ') as trim=' test'



0

Ну, це залежить від того, яку версію SQL Server ви використовуєте.

У SQL Server 2008 r2, 2012 та 2014 ви можете просто використовувати TRIM(CompanyName)

Функція TRIM SQL Server

В інших версіях ви повинні використовувати set CompanyName = LTRIM(RTRIM(CompanyName))


3
Обрізка недоступна за замовчуванням, це функція DAX: msdn.microsoft.com/en-us/library/gg413422.aspx
Wouter

0

Приклад:

SELECT TRIM('   Sample   ');

Результат: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

3
SQL Server не підтримується для функції Trim (). Але ви можете використовувати LTRIM () і RTRIM (). Якщо ви хочете використовувати обидва разом, ви можете використовувати LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri

Це запит Oracle, OP використовує Microsoft SQL Server
Wouter


0

Щоб видалити Enter :

Update [table_name] set
[column_name]=Replace(REPLACE([column_name],CHAR(13),''),CHAR(10),'')

Щоб видалити Tab :

Update [table_name] set
[column_name]=REPLACE([column_name],CHAR(9),'')

0

Якщо ми також хочемо обробляти пробіли та небажані вкладки,

Перевірте та спробуйте наведений нижче сценарій ( випробуваний блок ) -

--Declaring
DECLARE @Tbl TABLE(col_1 VARCHAR(100));

--Test Samples
INSERT INTO @Tbl (col_1)
VALUES
('  EY     y            
Salem')
, ('  EY     P    ort       Chennai   ')
, ('  EY     Old           Park   ')
, ('  EY   ')
, ('  EY   ')
,(''),(null),('d                           
    f');

SELECT col_1 AS INPUT,
    LTRIM(RTRIM(
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
    REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(col_1,CHAR(10),' ')
        ,CHAR(11),' ')
        ,CHAR(12),' ')
        ,CHAR(13),' ')
        ,CHAR(14),' ')
        ,CHAR(160),' ')
        ,CHAR(13)+CHAR(10),' ')
    ,CHAR(9),' ')
    ,' ',CHAR(17)+CHAR(18))
    ,CHAR(18)+CHAR(17),'')
    ,CHAR(17)+CHAR(18),' ')
    )) AS [OUTPUT]
FROM @Tbl;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.