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 서버 2017+에서 지원되는 방법입니다.
DJ Sipe

3
SQL Management Studio v17.8.1을 사용하고 있으며 TRIM 기능에 대한 Intellisense를 얻는 동안 실행할 때 유효하지 않다고 말합니다. 위의 코드를 사용해야했습니다. 기묘한.
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

다음은 테이블의 모든 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

vNext로 시작 하는 SQL Server 또는 Azure SQL Database 를 사용하는 경우 아래 쿼리를 사용할 수 있습니다.

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

예:

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
SELECT TRIM(ColumnName) FROM dual;

1
이것은 Oracle 쿼리입니다. OP는 Microsoft SQL Server를 사용하고 있습니다.
Wouter

0

Enter 를 제거하려면 다음을 수행 하십시오 .

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

제거하려면 :

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

0

공백과 원치 않는 탭도 처리하려면

아래 스크립트를 확인하고 시도하십시오 ( Unit Tested )

--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;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.