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"

Hauptversammlung Raja
quelle

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

Verwenden Sie die TRIM SQL-Funktion.

Wenn Sie SQL Server verwenden, versuchen Sie:

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

Sukanta Saha
quelle
0

Nun, es hängt davon ab, welche Version von SQL Server Sie verwenden.

In SQL Server 2008 R2, 2012 und 2014 können Sie einfach verwenden TRIM(CompanyName)

SQL Server TRIM-Funktion

In anderen Versionen müssen Sie verwenden set CompanyName = LTRIM(RTRIM(CompanyName))

Daniel Urdaneta
quelle
3
Das Trimmen ist standardmäßig nicht verfügbar, es ist eine DAX-Funktion: msdn.microsoft.com/en-us/library/gg413422.aspx
Wouter
0

Beispiel:

SELECT TRIM('   Sample   ');

Ergebnis: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)
Pritam
quelle
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;
Shevin
quelle
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),'')
Pieter
quelle
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;
Arulmouzhi
quelle