ลบ Trailing Spaces และอัพเดตในคอลัมน์ใน SQL Server


147

ฉันมีช่องว่างต่อท้ายในคอลัมน์ในตาราง SQL Server Company Nameเรียกว่า

ข้อมูลทั้งหมดในคอลัมน์นี้มีช่องว่างต่อท้าย

ฉันต้องการลบสิ่งเหล่านี้ทั้งหมดและต้องการมีข้อมูลโดยไม่มีช่องว่างต่อท้าย

ชื่อ บริษัท เป็นเหมือน "Amit Tech Corp "

ฉันต้องการชื่อ บริษัท "Amit Tech Corp"

คำตอบ:


296

ลอง SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - ลบช่องว่างนำหน้าจากด้านซ้ายของสตริง

RTRIM - ลบช่องว่างออกจากด้านขวา

Ex:

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

นี่คือสคริปต์ที่ดีสำหรับการตัดคอลัมน์ 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

SQL Server ไม่รองรับฟังก์ชัน Trim ()

แต่คุณสามารถใช้ LTRIM () เพื่อลบช่องว่างนำหน้าและ RTRIM () เพื่อลบช่องว่างต่อท้าย

สามารถใช้เป็น LTRIM (RTRIM (ColumnName)) เพื่อลบทั้งสอง

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

2

หากคุณใช้SQL Server (เริ่มต้นด้วย vNext) หรือ 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

ขึ้นอยู่กับเวอร์ชันของ SQL Server ที่คุณใช้อยู่

ใน SQL Server 2008 r2, 2012 และ 2014 คุณสามารถใช้ TRIM(CompanyName)

ฟังก์ชัน TRIM ของเซิร์ฟเวอร์ SQL

ในรุ่นอื่นคุณต้องใช้ 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),'')

วิธีลบแท็บ :

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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.