Rimuovere gli spazi finali e l'aggiornamento nelle colonne in SQL Server


147

Ho spazi finali in una colonna in una tabella di SQL Server chiamata Company Name.

Tutti i dati in questa colonna hanno spazi finali.

Voglio rimuovere tutti quelli e voglio avere i dati senza spazi finali.

Il nome dell'azienda è come "Amit Tech Corp "

Voglio che il nome dell'azienda sia "Amit Tech Corp"

Risposte:


296

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

LTRIM - rimuove eventuali spazi iniziali dal lato sinistro della stringa

RTRIM - rimuove tutti gli spazi da destra

Ex:

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

12
Va notato che TRIM è ora un metodo supportato in SQL Server 2017+.
DJ Sipe,

3
Sto usando SQL Management Studio v17.8.1 e mentre ottengo Intellisense per la funzione TRIM, quando lo eseguo, dice che non è valido. Ho dovuto usare il codice sopra. Strano.
DesertFoxAZ,

2
@DesertFoxAZ La versione di SQL Management Studio non è la versione di SQL Server
Jonatan Dragon il

30

Per tagliare solo gli spazi finali devi usare

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Tuttavia, se si desidera tagliare tutti gli spazi iniziali e finali, utilizzare questo

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

15

Bene, ecco un bel script per TRIM dinamicamente tutte le colonne varchar su una tabella:

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

Utilizzare la funzione TRIM SQL.

Se si utilizza SQL Server, provare:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

2

SQL Server non supporta la funzione Trim ().

Ma puoi usare LTRIM () per rimuovere gli spazi iniziali e RTRIM () per rimuovere gli spazi finali.

può usarlo come LTRIM (RTRIM (ColumnName)) per rimuovere entrambi.

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

2

Se si utilizza SQL Server (a partire da vNext) o il database SQL di Azure, è possibile utilizzare la query seguente.

SELECT TRIM(ColumnName) from TableName;

Per altri database SERVER SQL è possibile utilizzare la query seguente.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM: rimuove gli spazi da sinistra

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

RTRIM: rimuove gli spazi da destra

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




0

Esempio:

SELECT TRIM('   Sample   ');

Risultato: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

3
SQL Server non è supportato per la funzione Trim (). Ma puoi usare LTRIM () e RTRIM (). Se si desidera utilizzare entrambi insieme è possibile utilizzare LTRIM (RTRIM (ColumnName))
Thilina Sandunsiri,

Questa è una query Oracle, OP utilizza Microsoft SQL Server
Wouter

0
SELECT TRIM(ColumnName) FROM dual;

1
Questa è una query Oracle, OP utilizza Microsoft SQL Server
Wouter

0

Per rimuovere Invio :

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

Per rimuovere la scheda :

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

0

Se vogliamo anche gestire spazi bianchi e schede indesiderate-

Controlla e prova lo script seguente ( Test unitario ) -

--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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.