[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2007
    Beiträge
    243

    SQL - Zeichen an bestimmte Stelle schreiben

    Ich müsste in eine Datei, bei der der gesamte Datensatz als ein Feld definiert ist (es ist eine Schnittstellendatei, da ist das so erforderlich) an eine bestimmte Stelle Zeichen schreiben.

    D.h. ab Stelle 15 eine 6stellige Ziffernfolge.

    Wie geh ich das an?

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Per UPDATE mit SUBSTR und CONCAT ...

  3. #3
    Registriert seit
    Aug 2007
    Beiträge
    243
    Sorry, ich schaffs nicht. Entweder schreibt er mir nur die Zeichenfolge ins Feld und löscht den Rest, oder er schreibt mit die Zeichenfolge an Feldende.

  4. #4
    Registriert seit
    Jun 2009
    Beiträge
    316
    update yourFile set substr(field1, 5, 1) = '1' where blah

    Google

  5. #5
    Registriert seit
    Aug 2007
    Beiträge
    243
    update testlib/testfile set substr(testfeld, 4, 6) = 'TEST'

    Da bringt er die Meldung "token ungültig"

  6. #6
    Registriert seit
    Jun 2009
    Beiträge
    316
    Da hatte ich das Falsche kopiert:

    update yourFile set field1 = concat(substr(field1, 1, 4), concat('1', substr(field1, 6, 15))) where blah

  7. #7
    Registriert seit
    Jun 2009
    Beiträge
    316
    der 2. substr ist der Rest des Feldes, der wieder hinten dran muß.

  8. #8
    Registriert seit
    Jun 2009
    Beiträge
    316
    update lib/testfile
    set testfeld = concat(substr(testfeld, 5, 4),
    concat('XXXX', substr(testfeld, 9, 60)))

  9. #9
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Feld bis vor der Stelle plus neuer Inhalt an der Stelle plus Feld ab nach der Stelle:

    UPDATE Datei SET Feld = SUBSTR(Feld, 1, 14) CONCAT '123456' CONCAT SUBSTR(Feld, 21)

  10. #10
    Registriert seit
    Aug 2007
    Beiträge
    243
    Besten Dank, so hats funktioniert.

  11. #11
    Registriert seit
    Jun 2018
    Beiträge
    2
    Wenn Du mindestens auf 7.1 bist, geht das auch mit OVERLAY

    https://www.ibm.com/support/knowledg...scaoverlay.htm

    select overlay('ABCDEFG','X', 3, 1)
    from sysibm.sysdummy1

    OVERLAY
    ABXDEFG

    PS. Vielleicht ist es auch interessant, dass Daten auch "eingeschoben" statt überschrieben werden können:

    with data (s) as (values ('ABC123'))
    select s,
    overlay(s,'_', regexp_instr('ABC123','[0-9]', 1), 0)
    from data

    S OVERLAY
    ABC123 ABC_123

Similar Threads

  1. MIt RPG ins Systemlog schreiben
    By wilfried in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-03-18, 17:54
  2. Ausländische Zeichen in Streamfile schreiben
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 12-12-17, 14:32
  3. SQL UPDATE REPLACE begrenzt auf bestimmte Feldlänge!
    By svente in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 16-09-14, 14:43
  4. DTAQ-Eintrag Stelle 49-52
    By Andreas Herzfeldt in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-02-02, 12:00
  5. Char-Feld 4-stellig, per SQL nur 1. Stelle ändern
    By LGALF in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 05-07-01, 18:09

Berechtigungen

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