Hapus Trailing Spaces dan Perbarui di Kolom di SQL Server


147

Saya memiliki spasi di kolom dalam tabel SQL Server yang disebut Company Name.

Semua data dalam kolom ini memiliki spasi tambahan.

Saya ingin menghapus semua itu, dan saya ingin memiliki data tanpa spasi tambahan.

Nama perusahaannya seperti "Amit Tech Corp "

Saya ingin nama perusahaan menjadi "Amit Tech Corp"

Jawaban:


296

Mencoba SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - menghilangkan spasi utama dari sisi kiri string

RTRIM - menghapus ruang apa pun dari kanan

Ex:

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

12
Perlu dicatat bahwa TRIM sekarang merupakan metode yang didukung di SQL Server 2017+.
DJ Sipe

3
Saya menggunakan SQL Management Studio v17.8.1 dan sementara saya mendapatkan Intellisense untuk fungsi TRIM, ketika saya menjalankannya, dikatakan tidak valid. Saya harus menggunakan kode di atas. Aneh.
DesertFoxAZ

2
@DesertFoxAZ Versi SQL Management Studio bukan versi SQL Server
Jonatan Dragon

30

Untuk hanya memangkas ruang trailing yang harus Anda gunakan

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Namun, jika Anda ingin memotong semua ruang depan dan belakang, gunakan ini

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

15

Nah ini skrip yang bagus untuk mem-TRIM semua kolom varchar di atas meja secara dinamis:

--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

Gunakan fungsi TRIM SQL.

Jika Anda menggunakan SQL Server coba:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

2

SQL Server tidak mendukung fungsi Trim ().

Tetapi Anda dapat menggunakan LTRIM () untuk menghapus spasi terkemuka dan RTRIM () untuk menghapus spasi tambahan.

dapat menggunakannya sebagai LTRIM (RTRIM (ColumnName)) untuk menghapus keduanya.

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

2

Jika Anda menggunakan SQL Server (dimulai dengan vNext) atau Azure SQL Database maka Anda dapat menggunakan kueri di bawah ini.

SELECT TRIM(ColumnName) from TableName;

Untuk Database SQL SERVER lainnya, Anda dapat menggunakan kueri di bawah ini.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Menghapus spasi dari kiri

contoh: select LTRIM(' test ') as trim='test '

RTRIM - Menghapus spasi dari kanan

contoh: select RTRIM(' test ') as trim=' test'




0

Contoh:

SELECT TRIM('   Sample   ');

Hasil: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

3
SQL Server tidak didukung untuk fungsi Trim (). Tetapi Anda dapat menggunakan LTRIM () dan RTRIM (). Jika Anda ingin menggunakan keduanya bersama-sama, Anda dapat menggunakan LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri

Ini adalah permintaan Oracle, OP menggunakan Microsoft SQL Server
Wouter

0
SELECT TRIM(ColumnName) FROM dual;

1
Ini adalah permintaan Oracle, OP menggunakan Microsoft SQL Server
Wouter

0

Untuk menghapus Enter :

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

Untuk menghapus Tab :

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

0

Jika kita juga ingin menangani spasi putih dan tab yang tidak diinginkan-

Periksa dan Coba skrip di bawah ini ( Unit Diuji ) -

--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;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.