2013-01-14 19 views
29

Sto tentando di rimuovere determinati caratteri.Rimuovere determinati caratteri da una stringa

Al momento sono in uscita come cityname district ma voglio rimuovere cityname.

SELECT Ort FROM dbo.tblOrtsteileGeo 
WHERE GKZ = '06440004' 

uscita:

Büdingen Aulendiebach 
Büdingen Büches 
Büdingen Calbach 
Büdingen Diebach 
Büdingen Dudenrod 
Büdingen Düdelsheim 

output desiderato:

Aulendiebach 
Büches 
Calbach 
Diebach 
Dudenrod 
Düdelsheim 
+0

Qual è la dichiarazione? E dati di esempio? –

+2

Quindi hai intenzione di ripeterlo codificando tutte le città? O hai bisogno di qualcosa che lo farà in modo più generico? In tal caso, dovresti considerare di normalizzare i tuoi dati. Avrai un momento difficile con archi come "New London Connecticut" o "Porte de la Prairie France" ... –

+0

No non ho intenzione di hard-code il nome della città. C'è un'altra tabella in cui posso ottenere il nome della città inserendolo genericamente nella funzione di sostituzione – UrKll

risposta

53

È possibile utilizzare Replace funzione;

REPLACE ('Your String with cityname here', 'cityname', 'xyz') 
--Results 
'Your String with xyz here' 

Se si applica questo per una colonna della tabella in cui stringColumnName, cityName both are columns of YourTable

SELECT REPLACE(stringColumnName, cityName, '') 
FROM YourTable 

Oppure, se si desidera rimuovere 'cityName' stringa da mettere fuori di una colonna allora

SELECT REPLACE(stringColumnName, 'cityName', '') 
FROM yourTable 

EDIT: Dato che ora hai dato più dettagli, la funzione REPLACE non è il metodo migliore per ordinare il tuo problema lem. Di seguito è un altro modo di farlo. Anche @MartinSmith ha dato una buona risposta. Ora hai la scelta di selezionare di nuovo.

SELECT RIGHT (O.Ort, LEN(O.Ort) - LEN(C.CityName)-1) As WithoutCityName 
FROM tblOrtsteileGeo O 
     JOIN dbo.Cities C 
     ON C.foo = O.foo 
WHERE O.GKZ = '06440004' 
+0

non appena posso .. devo aspettare altri 4 minuti – UrKll

+2

@ Kaf Qual è la fretta? Sei preoccupato che una risposta migliore potrebbe arrivare? –

+0

@AaronBertrand: devi scherzare. Affatto. Lui è un nuovo utente, ecco perché. – Kaf

7

Un problema con REPLACE sarà dove i nomi delle città contengono il nome del distretto. Puoi usare qualcosa come

SELECT SUBSTRING(O.Ort, LEN(C.CityName) + 2, 8000) 
FROM dbo.tblOrtsteileGeo O 
     JOIN dbo.Cities C 
     ON C.foo = O.foo 
WHERE O.GKZ = '06440004' 
-1
UPDATE yourtable 
SET field_or_column =REPLACE ('current string','findpattern', 'replacepattern') 
WHERE 1 
Problemi correlati