SQL Server'da Sütunlarda Sondaki Alanları Kaldırma ve Güncelleme


147

Denilen bir SQL Server tablosundaki bir sütunda sondaki boşlukları var Company Name.

Bu sütundaki tüm verilerin sonunda boşluk vardır.

Bunların hepsini kaldırmak istiyorum ve veriyi boşluk bırakmadan almak istiyorum.

Şirket adı şuna benzer "Amit Tech Corp "

Şirket adının olmasını istiyorum "Amit Tech Corp"

Yanıtlar:


296

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

LTRIM - dizenin sol tarafındaki önde gelen boşlukları kaldırır

RTRIM - boşlukları sağdan kaldırır

Ör:

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

12
Unutulmamalıdır TRIM şimdi SQL Server 2017+ desteklenen bir yöntemdir.
DJ Sipe

3
SQL Management Studio v17.8.1 kullanıyorum ve TRIM işlevi için Intellisense alırken, çalıştırdığımda geçerli olmadığını söylüyor. Yukarıdaki kodu kullanmak zorunda kaldım. Tuhaf.
DesertFoxAZ

2
@DesertFoxAZ SQL Management Studio sürümü SQL Server sürümü değil
Jonatan Dragon

30

Sadece arkadaki boşlukları düzeltmek için

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Ancak, tüm önde gelen ve arkadaki boşlukları kırpmak istiyorsanız bunu kullanın

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

15

İşte bir tablodaki tüm varchar sütunlarını dinamik olarak TRIM için güzel bir komut dosyası:

--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 işlevini kullanın .

SQL Server kullanıyorsanız şunları deneyin:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

2

SQL Server, Trim () işlevini desteklemez.

Ancak, önde gelen boşlukları kaldırmak için LTRIM () ve sondaki boşlukları kaldırmak için RTRIM () kullanabilirsiniz.

ikisini de kaldırmak için LTRIM (RTRIM (SütunAdı)) olarak kullanabilirsiniz.

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

2

Eğer kullanıyorsanız SQL Server (vNext ile başlayan) veya Azure SQL veritabanı o zaman sorgudan altında kullanabilirsiniz.

SELECT TRIM(ColumnName) from TableName;

Diğer SQL SERVER Veritabanı için aşağıdaki sorguyu kullanabilirsiniz.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Soldan boşlukları kaldırır

örnek: select LTRIM(' test ') as trim='test '

RTRIM - Boşlukları sağdan kaldırır

örnek: select RTRIM(' test ') as trim=' test'




0

Misal:

SELECT TRIM('   Sample   ');

Sonuç: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

3
SQL Server, Trim () işlevi için desteklenmez. Ancak LTRIM () ve RTRIM () kullanabilirsiniz. Her ikisini birlikte kullanmak istiyorsanız
LTRIM

Bu bir Oracle sorgusu, OP Microsoft SQL Server kullanıyor
Wouter

0
SELECT TRIM(ColumnName) FROM dual;

1
Bu bir Oracle sorgusu, OP Microsoft SQL Server kullanıyor
Wouter

0

Enter'ı kaldırmak için :

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

Sekmeyi kaldırmak için :

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

0

Ayrıca beyaz boşlukları ve istenmeyen sekmeleri işlemek istiyorsak-

Aşağıdaki komut dosyasını kontrol edin ve deneyin ( Birim Test Edildi ) -

--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;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.