[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Was soll dieser Blödsinn?
    (dec(case when artikelnr > '0'
    then artikelnr else '0' end, 5, 0)

    Dein Problem ist, dass die Dec-Umwandlung immer durchgeführt wird und zwar unabhängig ob der 2. Vergleich dann zieht oder nicht.
    Wofür ist die Dec-Konvertierung denn überhaupt gut?
    Da reicht doch auch ArtikelNr >= '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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.877
    Was willst Du, nur die Artikel-Nr., die andere Zeichen als Ziffern enthalten?
    Da gibt es mehrere Möglichkeiten.

    1. Ohne Regular Expressions
    Code:
    Select FieldX, ....
       From ...
       Where Trim(Translate(FieldX, '          ', '1234567890')) > ''
    2. Mit Regular Expressions - müsste ab Release 7.1 verfügbar sein
    Code:
    Select FieldX 
       From ...
       Where RegexP_Like(Trim(FieldX), '[^\d]')
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Für RegEx in SQL sind Zusatzoptionen zu installieren die gerne vergessen werden.
    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

  4. #4
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Was willst Du, nur die Artikel-Nr., die andere Zeichen als Ziffern enthalten?
    Da gibt es mehrere Möglichkeiten.

    1. Ohne Regular Expressions
    Code:
    Select FieldX, ....
       From ...
       Where Trim(Translate(FieldX, '          ', '1234567890')) > ''
    2. Mit Regular Expressions - müsste ab Release 7.1 verfügbar sein
    Code:
    Select FieldX 
       From ...
       Where RegexP_Like(Trim(FieldX), '[^\d]')
    Birgitta
    Hallo,

    ich will eigentlich nur die Artikel-Nr haben die numerisch sind. Sprich alles andere wie mit -A oder Texte wie Artikel-Nr (kommt vom Import aus Excel) will ich nicht.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Dann nimm Birgittas Funktion:

    Trim(Translate(FieldX, ' ', '1234567890')) <> ''

    Der Translate ersetzt alle Ziffern durch Blanks, der Trim entfernt alle Blanks vor und nachher.
    Wenn dann noch was über ist, ist es ungleich Leer.
    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
    Aug 2001
    Beiträge
    2.877
    Dann must Du lediglich bei meiner 1. Lösung das Größerzeichen durch ein Gleichheitszeichen ersetzen und schon hast Du die numerischen Artikeln-Nr.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Stimmt, da habe ich das doch glatt negiert;-).
    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

  8. #8
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Danke für die Hilfe,

    wobei die Frage warum das SQL anders reagiert als das Query noch nicht beantwortet ist.
    vermutlich gibt es dazu auch keine logische Antwort.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Das liegt dann an der unterschiedlichen Betrachtung des Optimisers.
    Hast du z.B. eine Where-Klausel und es kann ein Index genommen werden, kommt das Ergebnis u.U. an den fehlerhaften Daten nicht vorbei.
    Ist ein Tablescan erforderlich oder ein ungünstiger Index, liegen die falschen Daten ggf. mit im Zwischenergebnis.

    Nun kommt es auch noch auf dein Release an.
    Je nach dem ob V5, V6, V7 arbeitet der Optimizer immer mal wieder anders.
    Und da nahm der Query/400 die sog. ClassicalQueryEngine (CQE) und SQL die SQLWQueryEngine (SQE).
    Ab irgend einem Release (frag Birgitta) wurde die CQE abgeschafft.
    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. Hex Werte in Alpha übernehmen
    By msost in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-03-16, 15:16
  2. V6R1 Datensicherung
    By KingofKning in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 11-11-15, 10:40
  3. Kovertierung numerisch nach alpha in RPG IV
    By Michael Rude in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 11-06-03, 11:46
  4. SQL-Alpha in Numeric
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 13-10-01, 12:36
  5. Alpha in numeric - SQL/QRY
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 02-10-01, 16:16

Berechtigungen

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