[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2
  1. #13
    Registriert seit
    Nov 2009
    Beiträge
    208
    Hmm,
    ein select alpafeld, digits(alpafeld) from ... zeigt mit
    Schlüssel DIGITS (XX )
    0000000051 00000000000000000000000000000051000000000000000000 0000000000000

    daher bin ich von alpa2num ausgegangen nicht von Num2Alpa

    das ist mein Fehler.

    Dieser ist beim verbinden mit einer anderen Datei aufgetreten, die "between" prüfung sollte mir schon den fehlerhaften Satz zeigen.

    ohne digits hat alles funktioniert, Danke
    DiBe

  2. #14
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das ist der Fluch der bösen Tat, dass die SQL-Programmierer uns das Denken abnehmen wollen.
    Früher gab es einen Typefehler, heute versucht man auf Teufel komm raus alle Werte zu casten.

    Schlechtestes Beispiel:
    select * from teil where tefirm = '2' and tweknr = 000

    Was fällt auf? Genau, da hat einer die Hochkommata vergessen.
    Bis V5R4, bzw. V6R1 PTFx wurde automatisch daraus:

    select * from teil where tefirm = '2' and tweknr = cast(000 as char(3))

    und es konnte sogar ein Index verwendet werden.
    Seit irgendeinem Stand wird aber nun daraus:

    select * from teil where tefirm = '2' and cast(tweknr as dec(3, 0)) = 000

    Daraus folgt, dass kein Index verwendet werden kann. Wir konnten uns halt nur nicht erklären, warum der SQL auf einmal so langsam wurde.
    Bis aus irgend einem Grunde mal ein Blank in das Feld TEWKNR rutschte, was dann beim Cast auf die Schnautze fällt. Nun ist SQL bei solchen Fehlern inzwischen doch sehr gesprächig geworden und man konnte den ominösen Cast in der Fehlermeldung sehen.

    Wer diese Entscheidung, die Reihenfolge der Autocasts zu ändern getroffen hat, gehört in die Wüste geschickt. Solche Fehler werden lange Zeit nicht entdeckt, erst wenn zufällig andere Daten drinstehen oder der Optimizer die Daten in einer anderen Reihenfolge liest.
    Folgendes Beispiel:

    select dec(Feld, 5, 0) from myfile where feld >= '0'

    leider wird zuerst der cast und danach die Whereklausel ausgeführt, ob ihrs glaubt oder nicht.
    Erst so funktionierts:
    select dec(case when Feld > '0' then Feld else null, 5, 0) from myfile where feld >= '0'
    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. #15
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Erst so funktionierts:
    select dec(case when Feld > '0' then Feld else null, 5, 0) from myfile where feld >= '0'
    Hallo,
    ich wollte jetzt Dein Beispiel nehmen um aus meiner Datei nur numerische Daten zu bekommen.
    Leider hast Du da wohl einen Syntax Fehler eingebaut und ich bin zu doof ihn zu finden.

    Kannst Du mich mal bitte erhellen.

    GG 4336

  4. #16
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Es war das End und nicht die Lerche.......

Similar Threads

  1. input/output feld dspf --> automatisch aus Feld springen
    By _MG_ in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 15-09-17, 16:02
  2. Cobol update Key Feld
    By TheDevil in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 20-05-16, 09:25
  3. GRAPHIC-Feld im RPG
    By CHGVAR in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 18-12-15, 11:04
  4. darstellung num-feld
    By easchbac in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 20-02-15, 10:47
  5. SQL Datumsabfrage aus case Feld
    By mk in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 29-08-14, 10:24

Berechtigungen

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