Veröffentlicht 13. Oktober 201014 j Hallo, kann mir jemand bitte helfen !! ( MSSQL 2005 ) ich möchte mit einem Sql Befehl ein Feld ab einem besteimmten Zeichen alles rechts davon löschen. zBsp: 12345-6654 332-54 66-6 Ergebnis: 12345 332 66 danke im Vorraus. Gruß Fatih
13. Oktober 201014 j hab die Atwort gefunden !!! UPDATE tabname SET columname = LEFT(columname, charindex('-', columname) - 1) Gruß Fatih
13. Oktober 201014 j Eine Möglichkeit: Beispiel: Select Substring(StringCol,0,COALESCE(CHARINDEX('|'),LEN(StringCol))) as 'Ergebnis' From table1 Erklärung: Du bildest einen Substring vom Wert der ZielColum mit dem Startindex 0 und als länge lässt du den Indexwert des zu suchenden Chars angeben. Wenn der Character nicht gefunden werden konnte wird stattdessen die länge des ursprünglichen String als länge des Substrings hergenommen. Beschreibung aller Befehle: Substring COALESCE CHARINDEX LEN lg Gateway Deine Lösung dürfte weitaus kürzer sein Bearbeitet 13. Oktober 201014 j von Gateway_man
13. Oktober 201014 j Eine Möglichkeit: Beispiel: Select Substring(StringCol,0,COALESCE(CHARINDEX('|'),LEN(StringCol))) as 'Ergebnis' From table1 Erklärung: Du bildest einen Substring vom Wert der ZielColum mit dem Startindex 0 und als länge lässt du den Indexwert des zu suchenden Chars angeben. Wenn der Character nicht gefunden werden konnte wird stattdessen die länge des ursprünglichen String als länge des Substrings hergenommen. UPDATE a SET a.feld = LEFT (a.feld, CHARINDEX('-', a.feld) - 1) FROM Tabelle a WHERE a.feld like '%-%' Alternativ, WHERE CHARINDEX('-', a.feld) > 0 Gruß Sven das wird nicht funktionieren. Zitat : "Wenn expression1 in expression2 nicht gefunden wird, gibt CHARINDEX 0 zurück." Coalesce gibt dir aber die erste Expresion die nicht NULL ist. Daher hast du hinterher ein LEFT(string,0) was in dem Update dann sehr ungut kommt wenn man das ausführt, und das geuschte Zeichen im String nicht vorkommt. Mein Vorschlag zu der Sache wäre :
13. Oktober 201014 j Wohl wahr. Allerdings kann man ja noch auf 0 prüfen. Naja alles in allem wäre das eh eine überdimensionierte Lösung. lg Gateway
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.