末尾のスペースを削除して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 Server 2017以降でサポートされるようになりました。
DJ Sipe

3
SQL Management Studio v17.8.1を使用していますが、TRIM関数のIntellisenseを取得しているときに、それを実行すると、無効であると表示されます。上記のコードを使用する必要がありました。変だ。
DesertFoxAZ 2018年

2
@DesertFoxAZ SQL Management StudioのバージョンはSQL Serverのバージョンではありません
ジョナタンドラゴン

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

使用している場合はSQL Serverの(vNextで始まる) または AzureのSQLデータベースを、あなたは以下のクエリを使用することができます。

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

空白や不要なタブも処理したい場合

以下のスクリプトを確認して試してください(単体テスト済み)-

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