2016-05-06 10 views
1

Ich habe eine Varchar-Spalte, und jedes Feld enthält ein einzelnes Wort, aber es gibt eine zufällige Anzahl von Pipe-Zeichen vor und nach dem Wort.Ersetzen Sie mehrere sich wiederholende Zeichen zu einem

Etwas wie folgt aus:

MyVarcharColumn 
'|||Apple|||||' 
'|||||Pear|||||' 
'||Leaf|' 

Wenn ich die Tabelle abfragen möchte ich die mehrere Leitungen zu einer einzigen ersetzen, so dass das Ergebnis so sein würde:

MyVarcharColumn 
'|Apple|' 
'|Pear|' 
'|Leaf|' 

Can not figure heraus, wie es mit REPLACE-Funktion zu lösen, weiß jemand?

Antwort

2

vkps Methode löst Ihr Problem absolut. Eine andere Methode, die funktioniert, und auch in einer Vielzahl anderer Situationen funktionieren wird, wird mit einem dreifachen REPLACE()

SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||', '|', '><'), '<>',''), '><','|') 

Diese Methode ermöglicht es Ihnen, ein Trennzeichen zwischen mehreren Saiten zu halten, wo Herr VPK-Methode werden die Strings verketten und setze ein Trennzeichen ganz am Anfang und am Ende.

SELECT REPLACE(REPLACE(REPLACE('|||Apple|||||Banana||||||||||', '|', '><'), '<>',''), '><','|') 
+0

dieses ist ziemlich genial :) – vacip

+0

@dfundako das ist noch vielseitiger, markiert als Lösung – Avithohol

6

Eine Möglichkeit besteht darin, alle | durch Leerzeichen zu ersetzen und ein Pipe-Zeichen am Anfang und Ende der Zeichenfolge hinzuzufügen.

select '|'+replace(mycolumn,'|','')+'|' from tablename 
+0

danke, es ist mein Fall löst, aber @ dfundako Lösung vielseitiger – Avithohol

Verwandte Themen