2012-06-07 10 views
13

Ho una tabella con diverse colonne varchar che sono quasi identiche alle chiavi primarie che ho in un'altra tabella, ad eccezione di un periodo (.). Ho esaminato la funzione replace in T-SQL ma il primo argomento non è un'espressione. Come posso rimuovere tutte le occorrenze di un particolare personaggio con SQL? Sembra che la risposta corretta potrebbe essere quella di sostituire con una stringa di lunghezza zero. È così vicino?Rimuovere un singolo carattere da un campo varchar SQL Server 2008

A chi ha pensato che la domanda non presentasse uno sforzo di ricerca, era principalmente dovuta a un fraintendimento della documentazione stessa.

+5

Quale documentazione stai guardando? Il primo parametro per [REPLACE] (http://msdn.microsoft.com/en-us/library/ms186862.aspx) è un'espressione di stringa. – Oded

+0

vedere 'Replace' fn su http://msdn.microsoft.com/en-us/library/ms186862.aspx – Gerrat

+0

Ho preso la documentazione msdn string_expression per indicare che doveva essere una stringa letterale, principalmente perché gli esempi forniti non lo erano t usare una colonna. Grazie. – wootscootinboogie

risposta

38

è possibile aggiornare la tabella utilizzando direttamente REPLACE sui valori della colonna:

UPDATE myTable 
SET myColumn = REPLACE(myColumn, '.', '') 
4

Si desidera rimuovere tutte le istanze di. dalla stringa? Se è così, avevi ragione su REPLACE:

DECLARE @Example TABLE 
(
    Value VARCHAR(100) 
) 
INSERT @Example (Value) 
VALUES ('Test.Value'), ('An.otherT.est') 

SELECT 
    REPLACE(Value, '.', '') 
FROM 
    @Example 

-- Replace only the first '.' 
SELECT 
    STUFF(Value, CHARINDEX('.', Value, 0), 1, '') 
FROM 
    @Example 

Modifica, facendo l'esempio un po 'più utile in quanto ho giocato intorno con esso in ogni caso, mi potrebbe anche inviare l'esempio. :)

6
update your_table 
set some_column = replace(some_column, '.', '') 
Problemi correlati