Fatih99 Geschrieben 13. Oktober 2010 Geschrieben 13. Oktober 2010 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 Zitieren
Fatih99 Geschrieben 13. Oktober 2010 Autor Geschrieben 13. Oktober 2010 hab die Atwort gefunden !!! UPDATE tabname SET columname = LEFT(columname, charindex('-', columname) - 1) Gruß Fatih Zitieren
Gateway_man Geschrieben 13. Oktober 2010 Geschrieben 13. Oktober 2010 (bearbeitet) 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 2010 von Gateway_man Zitieren
streffin Geschrieben 13. Oktober 2010 Geschrieben 13. Oktober 2010 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 : Zitieren
Gateway_man Geschrieben 13. Oktober 2010 Geschrieben 13. Oktober 2010 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.