2013-02-08 32 views
91

Sono presenti spazi finali in una colonna in una tabella di SQL Server denominata Company Name.Rimuovi spazi finali e aggiornamento nelle colonne in SQL Server

Tutti i dati in questa colonna hanno spazi finali.

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

Il nome della società è come "Amit Tech Corp "

Voglio il nome della società per essere "Amit Tech Corp"

risposta

206

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

LTRIM - rimuove tutti gli spazi iniziali dal lato sinistro della stringa

RTRIM - rimuove gli spazi dalla destra

Es:

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

@Wouter, informazioni extra non danneggia nessuno :). –

+0

Si noti che [TRIM] (https://docs.microsoft.com/en-us/sql/t-sql/functions/trim-transact-sql) è ora un metodo supportato in SQL Server 2017+. –

22

Per tagliare solo gli spazi finali si dovrebbe utilizzare

UPDATE 
    TableName 
SET 
    ColumnName = RTRIM(ColumnName) 

Tuttavia, se si vuole tagliare tutti gli spazi iniziali e finali quindi utilizzare questa

UPDATE 
    TableName 
SET 
    ColumnName = LTRIM(RTRIM(ColumnName)) 
7
update MyTable set CompanyName = rtrim(CompanyName) 
1

Utilizzare la funzione SQL TRIM.

Se si utilizza SQL Server prova:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable 
13

Beh qui è un bel copione per tagliare tutte le colonne varchar su una tabella in modo dinamico:

--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 + ']))'[email protected] 
    FROM #tempcols 
    where id = @i 

    select @i = @i+1 
END 

--execute the entire query 
EXEC sp_executesql @trimmer 

drop table #tempcols 
-7

Il modo migliore per rimuovere tutti gli spazi è selezionare Sostituisci ("Amit Tech Corp",'', '')

Invece di LTRIM & RTRIM

+2

Questo non risponde alla domanda. 'REPLACE' rimuoverà tutti gli spazi nella stringa, non solo quelli all'inizio/fine – svvac

+1

Ciò produrrà" AmitTechCorp ". – m0g

+0

La domanda riguarda eliminare gli spazi iniziali iniziali e finali, non sostituirli tutti – blfuentes

-1

SELECT TRIM (ColumnName) FROM dual;

+0

Questa è una query Oracle, OP sta utilizzando Microsoft SQL Server – Wouter

0

Bene, dipende dalla versione di SQL Server che si sta utilizzando.

In SQL Server 2008 R2, 2012 e il 2014 si può semplicemente utilizzare TRIM(CompanyName)

SQL Server TRIM Function

In altre versioni si deve utilizzare set CompanyName = LTRIM(RTRIM(CompanyName))

+2

Trim non è disponibile per impostazione predefinita, è una funzionalità DAX: https://msdn.microsoft. it/it/us/library/gg413422.aspx – Wouter

-1

Esempio:

SELECT TRIM(' Sample '); 

Risultato: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName) 
+1

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

+0

Questa è una query Oracle, OP sta utilizzando Microsoft SQL Server – Wouter

0

SQL Server non supporta la funzione Trim().

Ma è possibile utilizzare LTRIM() per rimuovere gli spazi iniziali e RTRIM() per rimuovere gli spazi finali.

può utilizzarlo come LTRIM (RTRIM (ColumnName)) per rimuoverli entrambi.

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

Se si utilizza SQL Server (a partire da vNext) o Azure SQL Database quindi è possibile utilizzare la query di seguito.

SELECT TRIM(ColumnName) from TableName; 

Per gli altri database del server SQL è possibile utilizzare la query di seguito.

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'

Problemi correlati