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"

RUPST Raja
sumber

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))
rs.
sumber
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))
Robin Day
sumber
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
Hiram
sumber
7
update MyTable set CompanyName = rtrim(CompanyName)
Christoffer Lette
sumber
2

Gunakan fungsi TRIM SQL.

Jika Anda menggunakan SQL Server coba:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
Simon
sumber
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))
Thilina Sandunsiri
sumber
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'

Sukanta Saha
sumber
0

Yah, itu tergantung pada versi SQL Server yang Anda gunakan.

Di SQL Server 2008 r2, 2012 Dan 2014 Anda cukup menggunakan TRIM(CompanyName)

Fungsi TRIM SQL Server

Di versi lain Anda harus menggunakan set CompanyName = LTRIM(RTRIM(CompanyName))

Daniel Urdaneta
sumber
3
Trim tidak tersedia secara default, ini adalah fitur DAX: msdn.microsoft.com/en-us/library/gg413422.aspx
Wouter
0

Contoh:

SELECT TRIM('   Sample   ');

Hasil: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
pritam
sumber
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;
shevin
sumber
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),'')
Pieter
sumber
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;
Arulmouzhi
sumber