2009-01-09 12 views
8

Ich habe eine Tabelle mit den Spalten Mitarbeiter, Adresse, Stadt, Bundesland und Postleitzahl. Ich habe Adresse, Stadt, Staat, Postleitzahl zu einer einzelnen Spalte "Adresse" verschmolzen, die jedes Feld durch Komma trennt.Abfrage zum Ersetzen eines Kommas in SQL?

Mein Problem ist, wenn eines der Felder Null ist, wird ein zusätzliches Komma eingefügt. Wenn beispielsweise city null ist, entspricht der resultierende Wert address,,state,zipcode. Ich muss dieses zusätzliche Komma entfernen. Wie macht man das? Bitte helfen Sie.

+0

Welche Sprache verwenden Sie? – Irmantas

+0

-1: Warum würden Sie eine einzelne Spalte mit vier verschiedenen Werten erstellen? –

+0

Warum versuchen Sie das zu tun? Normalerweise ist es sinnvoll, das zusätzliche Komma leer zu lassen (wenn es leer sein sollte) – aronchick

Antwort

15

könnten Sie verwenden ein case when Konstrukt

... = case when city is null then '' else city + ',' end 

Wenn die Werte bereits in der Datenbank enthalten sind Sie es auf diese Weise ersetzen könnte:

UPDATE tableX SET address= replace(address, ',,', ',') 

es Execute N-mal sicher sein, auch die zur Deckung "Alle Felder sind Null" -Fall.

+0

Ich bin mir ziemlich sicher, dass REPLACE() immer alle Vorkommen ersetzt. Zumindest tut es in tSQL und MySQL, ich bin mir nicht sicher, ob es Teil des Vanille-SQL-Standards ist. –

+0

Ja, aber wählen Sie zum Beispiel replace (',,,', ',,', ',') results in ,, – splattne

1

oder Sie können in PHP

<?php 

$str = 'address,,state,zipcode'; 

$str = preg_replace('/,{2,}/i', ',', $str); 
echo $str; 

?> 

ich dies manuell tun glauben, dass Sie dies auch in Ihrer Sprache tun

0

Verwendung ersetzen, wenn Sie die Zeichenfolge für Insert concat:

REPLACE('address,,state,zipcode', ',,' , ',') 
1
select replace(replace(replace(replace('LOKO, , , kkslksl ',' ',''),',','<>'),'><',''),'<>',',') from dual 
Verwandte Themen