[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    50

    SQL update mit substr

    Hallo,

    ich versuche mit Sql einen Teilbereich eines Feldes zu verändern. Leider funktioniert mein SQL Befehl nicht mehr. Gibt es eine Änderung mit Rel. V5R4M0

    update cptfil/Rech set substr(thcmt, 30, 1) = '®'
    WHERE substr(Thcmt, 30, 1) <> '®' and
    TTDTE between 20070707 and 20070708

    Fehlermeldung: Token ( ungültig. Gültige Token: =.

    Kann mir jemand weiterhelfen?
    Vielen Dank.
    Petra

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    update cptfil/Rech set thcmt = substr(thcmt, 1, 29) concat '®' concat substr(thcmt, 31, restlänge)
    WHERE substr(Thcmt, 30, 1) <> '®' and
    TTDTE between 20070707 and 20070708
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Apr 2003
    Beiträge
    195
    Guten Morgen Fuerchau,

    ich habe eine Frage zu dem SQL-Update mit Teilstring:

    Ich muss einen Teilstring eines Feldes mit 1341 Satzlänge updaten und zwar lediglich ab der 2. Stelle mit einer Länge von 3.

    Genauer gesagt sollte ab der 2. Stelle des Strings '001' anstelle von '000' stehen. Hier das was ich probiert habe:

    B000RWL20110901165200
    B000RWL20110901165200
    K000RWL20110901165200

    update testfgn/fbbijet896 set bijet = substr(bijet, 3, 1) concat '001' concat substr(bijet, 4, 1337) where substr(bijet, 2, 3) = '000'

    dabei überschreibt er aber die ersten 4 Stellen und das Ergebnis sieht so aus:

    00010RWL20110901165200
    00010RWL20110901165200
    00010RWL20110901165200

    was mache ich bitte falsch?


    Danke, habe den Fehler soeben gefunden. Es muss richtig lauten:

    update testfgn/fbbijet896 set bijet = substr(bijet, 1, 1) concat '001' concat substr(bijet, 5, 1337) where substr(bijet, 2, 3) = '000'
    Last edited by FNeurieser; 02-09-11 at 08:47. Grund: Lösung gefunden

  4. #4
    Registriert seit
    Nov 2002
    Beiträge
    173
    Moien,

    seit V5R3 (oder V5R4?) geht das auch ein wenig einfacher mit der neuen INSERT Funktion (Auszug aus der SQL Reference) :

    INSERT ( source-string , start , length , insert-string )

    Returns a string where length characters have been deleted from source-string beginning at start and where insert-string has been inserted into source-string beginning at start.

    In deinem konkreten Beispiel wäre demnach das hier richtig :

    update testfgn/fbbijet896 set bijet = insert(bijet, 2, 3, '001')
    where substr(bijet, 2, 3) = '000'

    Grüsse und schönes Wochenende

    -Martin

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da ist wohl ein kleiner Rechenfehler:

    update testfgn/fbbijet896 set bijet = substr(bijet, 1, 1) concat '001' concat substr(bijet, 5, 1337) where substr(bijet, 2, 3) = '000'
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Apr 2003
    Beiträge
    195
    @Fuerchau,

    guten Abend,

    Sie schrieben:
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da ist wohl ein kleiner Rechenfehler:

    update testfgn/fbbijet896 set bijet = substr(bijet, 1, 1) concat '001' concat substr(bijet, 5, 1337) where substr(bijet, 2, 3) = '000'
    und siehe da, genau das habe ich kurz nach Fragestellung gemacht und deshalb auch meinen Thread editiert.

    Aber noch mal rech herzlichen Dank, dieses Forum ist wirklich einmalig, man erhält prompt Unterstützung (Achtung - nicht ironisch gemeint - sondern wirklich sehr dankbar)

    @Martin
    Danke, werde dies am Montag auch noch probieren. Wußte nicht das es so einfach gehen soll.
    Last edited by FNeurieser; 02-09-11 at 17:40. Grund: Kommentar zu Martins Antwort

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Jo stimmt, ich habe da nicht weitergelesen .
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQL Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  3. SQL Update über 2 i5 Systeme
    By daniel.ludwig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 21-07-06, 12:41
  4. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •