Announcement

Collapse
No announcement yet.

Char von links kürzen

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

  • Char von links kürzen

    Hallo Zusammen,

    ich muss eine Zeichenkette von links nach folgenden Regeln kürzen:

    - Wenn vorne "Z xxxxxx" steht, soll "Z " abgeschnitten werden
    - Wenn vorne "RD 99 xxxx" steht, soll "RD 99 " abgeschnitten werden

    Nun habe ich mit LTrim(LTrim(Zeichenkette, "Z "), "RD 99 ") zwar gewünschtes Ergebnis erreicht, ABER wenn jetzt z.B. im Bereich xxx eines der Buchstaben zum abschneiden enthalten ist, wird dieser auch entfernt.
    Bsp.: Orginal="RD 99 Regiostand" Ergebnis="egionstand" Soll="Regiostand"
    Analog gilt dies auch mit dem Z.

    Gibt es nun eine Funktion, die das verhindert? Also die NUR das abschneidet, was im "set" - Bereich der LTrim-Funktion steht. Also nur wenn "RD 99 " wirklich so hintereinander steht, dann wird es abgeschnitten, sonst nicht?

    Ich möchte vermeiden, mir eine Logik aufbauen und programmieren zu müssen, wenn es dafür vllt. eine einfache Funktion gibt. Ich könnte nämlich umständlich z.B. mit length bis zum ersten bzw. zweiten Leerzeichen die Zeichenkette auslesen und dann mit substr ab der berechneten Stelle mit der Restlänge ausgeben.

    Wie gesagt, wenns eine Fkt. gibt bzw. eine die restriktiv wirklich nur das abschneidet was im Set steht und nicht eines der Zeichen, die im Set stehen, dann wäre ich sehr dankbar, wenn mir das jemand nennen könnte. :-)

    VG
    Spawnhunter

  • #2
    Originally posted by spawnhunter View Post
    Hallo Zusammen,

    ich muss eine Zeichenkette von links nach folgenden Regeln kürzen:

    - Wenn vorne "Z xxxxxx" steht, soll "Z " abgeschnitten werden
    - Wenn vorne "RD 99 xxxx" steht, soll "RD 99 " abgeschnitten werden


    VG
    Spawnhunter
    Hallo,

    Wenn deine Datenbank Regular Expression (RegExp) untestützt, würde ich dies mal anschauen


    Gruss

    Nachtrag : Blöd, dies ist da das Oracle Forum :-). Also :

    http://download.oracle.com/docs/cd/B....htm#sthref534

    - Dein erstes Beispiel :

    WITH mystring AS (SELECT 'Z xxxxxx' str FROM DUAL)
    SELECT REGEXP_REPLACE (str, '[Z ]')
    FROM mystring;
    Zuletzt editiert von dbwizard; 28.05.2009, 15:17.

    Comment


    • #3
      So sollte es gehen:
      Code:
      WITH kette AS
           (
              SELECT 'Z 12TR!_äöüVb' str FROM DUAL
              UNION ALL
              SELECT 'RD 99 Regiostand' str FROM DUAL
              UNION ALL
              SELECT 'RD 99 Z Regiostand' str FROM DUAL
              UNION ALL
              SELECT '1234 RD 99' str  FROM DUAL)
      SELECT regexp_replace(str, '^(RD 99 |Z )?')   FROM kette;
      Sucht am Anfang des Strings nach (RD 99) ODER (Z ) (nur einmal vorhanden) und schneidet also faktisch falls gefunden, diese Muster aus.

      Viel Erfolg!

      Comment


      • #4
        Ja mensch SUPER! Beide Antworten bzw. der Tipp bzgl. REGEXP_REPLACE ist genau das was ich gesucht habe.

        Vielen Dank für die schnelle Hilfe!!!!!

        Comment

        Working...
        X