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
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
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
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 :
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden