Charindex richtig anwenden

IchHH

Datenbank-Guru
Beiträge
282
Hallo,

ich versuche gerade Charindex zu nutzen um diese in einen Concat einzubauen. Hier das Beispiel.

Ich will in einer Datenbank die eine Spalte namens ORTSNAME enthält, alle Orte ermitteln die eine "/" in Ihren Namen enthalten haben um diese dann vor dem "/" mit einen Leerschritt zu versehen.

Also "Wittstock/Dosse" soll hinterher "Wittstock /Dosse" heißen. Nun hätte ich mit left und right arbeiten können, nur das die Orte unterschiedlich lange namen haben, wollte ich mittels Charindex ermitteln wo sich das "/" befindet um dann ein left anwenden zu könne, also in etwa so:

left(Ortsname,charindex('/',reverse(Ortsname)))

Wie ihr sehr klappt es aber nicht zum einen weil er "/" nicht findet und zum anderen nicht weil ich Ihn nicht gesagt habe wieviel Zeichen er nach Rechts anzeigen soll. Wenn dieser code aber klappt hätte ich das selbe mir right gemacht und dann den ganzen Kram mit Concate und eine Leerzeichen zusammengeführt.

Wie aber lautet der richtige Code?
 
Werbung:
Ich denke ich verwende den falsch Ansatz. Vielleicht ist patindex besser. Der code würde dann so aussehen:

Code:
Select Case When (Case When Ortsname like '%/%' Then right(Ortsname,len(Ortsname)-patindex('%/%',Ortsname)+1) Else Null End) IS not Null Then
Concate((Case When Ortsname like '%/%' Then left(Ortsname,patindex('%/%',Ortsname)-1) Else Ortsname End) & ' ' & (
Case When Ortsname like '%/%' Then right(Ortsname,len(Ortsname)-patindex('%/%',Ortsname)+1) Else Null End))
 from S_92576

Leider funktioniert Concate dann nicht. Bekomme die Fehlermeldung "'Concate' wird nicht als Name einer integrierten Funktion erkannt."
 
Schande auf mein Haupt. Gleich mehrere Fehler eingebaut. Die Lösung heißt:

Code:
Select Case When (Case When Ortsname like '%/%' Then right(Ortsname,len(Ortsname)-patindex('%/%',Ortsname)+1) Else Null End) IS not Null Then
(Concat((Case When Ortsname like '%/%' Then left(Ortsname,patindex('%/%',Ortsname)-1) Else Ortsname End) , ' ' , (
Case When Ortsname like '%/%' Then right(Ortsname,len(Ortsname)-patindex('%/%',Ortsname)+1) Else Null End))) Else Ortsname End as Ortsname
 from S_92576
 
charindex() geht auch, ist ja nur ein Zeichen.

Geht nicht vielleicht auch
Code:
SELECT replace(Ortsname,'/',' /') AS Ortsname FROM S_92576
 
Werbung:
Zurück
Oben