Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

update mit substring

Dieses Thema im Forum "Oracle" wurde erstellt von selim, 11 Juli 2016.

  1. selim

    selim Benutzer

    Hallo,

    ich habe kurz eine frage vielleicht kann mir jemand helfen?

    ich wollte ein update auf einer Oracle Datenbank machen mit substr.

    funktioniert nicht leider nicht so wie ich es kenne von DB2.

    Hier meine frage ich habe etwas gefunden und damit funktioniert es aber ich verstehe die Syntax nicht, kann dies mir jemand erklären vielleicht?

    Das Feld ist 10 stellen lang.

    normaler weisse hätte ich es so geschrieben:

    UPDATE Tabelle
    SET Feld =
    substr(Feld, 2, 1) = '1'

    in Orcale muss ich es so schreiben:
    UPDATE Tabelle
    SET Feld =
    substr(Feld, 1, 1) || '1' || substr(Feld, 3)

    Danke schon mal
     
  2. akretschmer

    akretschmer Datenbank-Guru

    ja.

    mit den zwei substr() - Funktionen zerschnippelst Du den String, mit || verklebst Du zwei Strings. Alles zusammen ergibt dann das, was du machen willst.

    Hint: die Verwendung von WHERE in einem Update-Befehl kann einem vor plötzlich starker Alterung bewahren ...
     
  3. selim

    selim Benutzer

    Das habe ich verstanden aber ich gebe im zweiten substring eine 3 und keine länge ein um auf meine stellen zu kommen wieso 3?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Das ist der Start des Substrings. Wenn das Ende fehlt, geht es bis zu dessen bitteren ...
     
  5. selim

    selim Benutzer

    Danke, also bedeute es dies:

    Datensatz: 101234
    update tabelle
    set
    substr(feld, 1, 1) ||'1'| substr(feld, 3)

    ab stelle 0 bis 1 "1" wird übernommen || Stelle 2 mit "0" wird durch "1" ersetzt || und abstelle 3 wird alles übernommen bis zum bitteren ... ;-) Tausend dank, jetzt macht es sinn.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    In PG geht es mit Position 1 los:

    Code:
    test=*# select substring('123456789',0,1);
     substring
    -----------
    (1 Zeile)
    
    test=*# select substring('123456789',1,1);
     substring
    -----------
     1
    (1 Zeile)
    
    test=*#
    
    Also, ab Stelle 1 bis 1 wird übernommen, der Rest ist ok.
     
  7. selim

    selim Benutzer

    ups Danke
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden