Ich habe eine Varchar-Spalte eine Liste von Komma enthält Zahlen getrennt:Wert Entfernen von varchar Liste
listOfNumbers
1,2,3,4
11,1,1,3
4,2,1
1
Jetzt muß ich eine Funktion erstellen, die eine Zahl in einer Eingabe nimmt und entfernen, wenn aus der Säule.
Beispiel: Wenn der Eingang 1 ist das Ergebnis sollte sein:
listOfNumbers
2,3,4
11,3
4,2
empty
Ich habe versucht, mehrere mit REPLACE wie:
declare @listOfNumbers as varchar(max)
set @listOfNumbers = '1,2,3,1'
select *, REPLACE(REPLACE(listOfNumbers,',1', ''),'1,', '') from
(
select @listOfNumbers as listOfNumbers
) t1
Aber es nicht korrekt ist, da ich gerade Zahlen REPLACE wird wie 11 oder 111.
Gibt es eine Möglichkeit, alle Fälle zu erfassen?
Vielen Dank im Voraus für die Antworten.
Edit: Ich weiß, das ist nicht die richtige Art, um mit dieser Art von Daten umzugehen, aber ich habe keine Wahl darüber.
Nie, nie speichern Daten als Komma getrennt Elemente. Es wird dir nur viel Ärger machen. – jarlh
Warum verwenden Sie nicht das richtige Modell? Speichern Sie sie in einer separaten Tabelle, die über den Fremdschlüssel mit der Haupttabelle verknüpft ist. –
Wenn Sie eine der beliebten Tabellenwertfunktionen (TVFs) finden, die eine durch Kommas getrennte Zeichenfolge in eine Spalte mit Werten aufteilen, können Sie den Wert, den Sie nicht verwenden, löschen nicht wollen, und dann den Rest in etwas Böses verderben? – HABO