Announcement

Collapse
No announcement yet.

String bis zu einem bestimmten Zeichen auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String bis zu einem bestimmten Zeichen auslesen

    Hallo zusammen,

    ich möchte Daten aus einer Tabelle über eine Sicht ergänzen. Es handelt sich dabei um Artikelnummern, die so 0120-6, so 0120 oder so 0030 aussehen sollen. Bei den Daten in der Tabelle fehlen immer die führenden Nullen. Es muss also überprüft werden, wieviele Stellen die Artikelnummer vor dem Bindestrich hat, falls es einen gibt, und diese dann bis 4 Stellen mit führenden Nullen aufgefüllt werden. Falls es keinen Bindestrich gibt, sollen einfach Nullen vorgesetzt werden, bis der String 4 Zeichen beinhaltet.
    Kann man das mit SQL machen? Und falls ja, wie?
    Benutzt wird ein MS SQL 2000 Server.

    Ich bedanke mich schon mal für eure Hilfe.

    Gruß
    Olli

  • #2
    Hallo Olli,

    Ich bin mir nicht ganz sicher, aber ich glaube die von dir gesuchte Funktion heisst CHARINDEX (http://msdn2.microsoft.com/en-us/library/ms186323.aspx).
    *-- robert.oh. --*

    Comment


    • #3
      Originally posted by Desastermaster View Post
      ich möchte Daten aus einer Tabelle über eine Sicht ergänzen. Es handelt sich dabei um Artikelnummern, die so 0120-6, so 0120 oder so 0030 aussehen sollen. Bei den Daten in der Tabelle fehlen immer die führenden Nullen. Es muss also überprüft werden, wieviele Stellen die Artikelnummer vor dem Bindestrich hat, falls es einen gibt, und diese dann bis 4 Stellen mit führenden Nullen aufgefüllt werden. Falls es keinen Bindestrich gibt, sollen einfach Nullen vorgesetzt werden, bis der String 4 Zeichen beinhaltet.
      Kann man das mit SQL machen? Und falls ja, wie?
      Benutzt wird ein MS SQL 2000 Server.
      z. B. so:
      Code:
      use tempdb
      create Table #Test (A VarChar (10)); 
      INSERT INTO #Test VALUES ('10');
      INSERT INTO #Test VALUES ('0011');
      INSERT INTO #Test VALUES ('012-a');
      INSERT INTO #Test VALUES ('0013-a');
      
      SELECT a, 
      COALESCE (REPLICATE ('0', 4 - CASE WHEN  CASE WHEN Charindex ('-', a) > 0 
      					THEN Charindex ('-', a) - 1 
      					ELSE Len (A)
      				      END < Len (A) 
      			       THEN  CASE WHEN Charindex ('-', a) > 0 
      					THEN Charindex ('-', a) - 1					ELSE 0 
        				     END
      			        ELSE Len (A) 
      			 END), '') + a AS Filled_With0
      FROM  #Test
      ergibt
      Code:
      a          Filled_With0
      ---------- -----------------------------
      10         0010
      0011       0011
      012-a      0012-a
      0013-a     0013-a
      
      (4 Zeile(n) betroffen)

      Comment


      • #4
        Danke, hat super funktioniert.

        Comment

        Working...
        X