Entfernen Sie nachfolgende Leerzeichen und aktualisieren Sie sie in Spalten in SQL Server


147

Ich habe nachgestellte Leerzeichen in einer Spalte in einer SQL Server-Tabelle namens Company Name .

Alle Daten in dieser Spalte haben nachgestellte Leerzeichen.

Ich möchte alle diese entfernen und die Daten ohne nachgestellte Leerzeichen haben.

Der Firmenname ist wie "Amit Tech Corp "

Ich möchte, dass der Firmenname lautet "Amit Tech Corp"

Antworten:


296

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

LTRIM - Entfernt alle führenden Leerzeichen von der linken Seite der Zeichenfolge

RTRIM - Entfernt alle Leerzeichen von rechts

Ex:

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

12
Es ist zu beachten, dass TRIM jetzt eine unterstützte Methode in SQL Server 2017+ ist.
DJ Sipe

3
Ich verwende SQL Management Studio v17.8.1 und während ich Intellisense für die TRIM-Funktion erhalte, heißt es, wenn ich sie ausführe, dass sie ungültig ist. Ich musste den obigen Code verwenden. Seltsam.
DesertFoxAZ

2
@ DesertFoxAZ SQL Management Studio-Version ist keine Version von SQL Server
Jonatan Dragon

30

Um nur nachgestellte Leerzeichen zu kürzen, sollten Sie verwenden

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Wenn Sie jedoch alle führenden und nachfolgenden Leerzeichen kürzen möchten, verwenden Sie diese Option

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

15

Nun, hier ist ein nettes Skript, um alle varchar-Spalten in einer Tabelle dynamisch zu TRIMEN:

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

Verwenden Sie die TRIM SQL-Funktion.

Wenn Sie SQL Server verwenden, versuchen Sie:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

2

SQL Server unterstützt die Funktion Trim () nicht.

Sie können jedoch LTRIM () verwenden, um führende Leerzeichen zu entfernen, und RTRIM (), um nachfolgende Leerzeichen zu entfernen.

kann es als LTRIM (RTRIM (ColumnName)) verwenden, um beide zu entfernen.

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

2

Wenn Sie SQL Server (beginnend mit vNext) oder Azure SQL Database verwenden , können Sie die folgende Abfrage verwenden.

SELECT TRIM(ColumnName) from TableName;

Für andere SQL Server-Datenbanken können Sie die folgende Abfrage verwenden.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Entfernt Leerzeichen von links

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

RTRIM - Entfernt Leerzeichen von rechts

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




0

Beispiel:

SELECT TRIM('   Sample   ');

Ergebnis: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

3
SQL Server wird für die Funktion Trim () nicht unterstützt. Sie können jedoch LTRIM () und RTRIM () verwenden. Wenn Sie beide zusammen verwenden möchten, können Sie LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri

Dies ist eine Oracle-Abfrage, OP verwendet Microsoft SQL Server
Wouter

0
SELECT TRIM(ColumnName) FROM dual;

1
Dies ist eine Oracle-Abfrage, OP verwendet Microsoft SQL Server
Wouter

0

So entfernen Sie die Eingabetaste :

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

So entfernen Sie Tab :

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

0

Wenn wir auch mit Leerzeichen und unerwünschten Tabulatoren umgehen wollen -

Überprüfen und testen Sie das folgende Skript ( Unit Tested ) -

--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;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.