1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Manipulation eines Wertes

Dieses Thema im Forum "Oracle" wurde erstellt von sentence87, 22 März 2012.

  1. sentence87

    sentence87 Neuer Benutzer

    Hallo zusammen,
    bin so langsam echt am verzweifeln. Ich habe folgendes Problem. In einer Tabelle xxx habe ich eine Spalte ID die wie folgt aussieht: 1000000000000000002367809.
    Jetzt möchte ich gern den Ausgegebenen Wert so manipulieren, dass die Ausgabe des Wertes ID folgendermaßen aussieht: 1_2367809@XXX_1_XX

    Zur Erklärung: Die nullen ab zweiter Stelle sollen bis zu der nächsten Stelle die nicht 0 ist durch einen Unterstrich ersetzt werden. Die Anzahl der Aufeinanderfolgenden nullen kann unterschiedlich sein.Dabei ist Jedoch zu beachten dass die Führende 1 einen Wert zwischen 1-9 haben kann.Des Weiteren ist zu beachten, dass nullen die innerhalb des rot markierten Bereichs nicht wegfallen dürfen. Am Ende an den String soll dann noch ein @XXX_1_XX angefügt werden.

    Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen..
     
  2. ukulele

    ukulele Datenbank-Guru

    Da gibt es mehrere Wege, allerdings ist es mit replace etwas schwer. Ich versuchs mal:
    Code:
    DECLARE    @spalte VARCHAR(255) = '1000000000000000002367809@XXX_1_XX'
     
    SELECT    left(@spalte,1) + '_' + right(@spalte,len(@spalte)-patindex('%[1-9]%',right(@spalte,len(@spalte)-1)))
    Geht allerdings nur, wenn die Ziffer vorne einstellig bleibt.
     
  3. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    Ist ein bisschen komplizierter aber geht:

    1000000000000000002367809

    (
    substr(columname , 1 , instr(columname, '0'))
    || '_' ||
    TRIM( replace ( substr( columname, instr(columname, '0') ), '0', '' ) )
    || '@XXX_1_XX'
    ) as yourname

    1_2367809@XXX_1_XX


    Probiers mal. ;-) Lg

     

Diese Seite empfehlen