[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2015
    Beiträge
    336

    Frage zu Query

    Hallo zusammen,

    habe wieder mal eine Frage, diesmal zum Query:

    Gibt es eine Möglichkeit bei einem Query nicht Case Sensitiv abzufragen, sondern wenn z.b. klein geschrieben wurde, auch die großgeschriebenen Einträge zu erhalten ?

    Beispiel: wenn ich nach like 'bm%' frage, das ich auch die Einträge mit 'BM' bekomme

    Für Infos wäre ich wie immer dankbar.

    Grüße A.

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    nimm SQL,
    zur Not mit QMQRY die abfrage bauen und nach SQL umstellen lassen.
    Dann die Where Bedingung ergänzen
    ... where upper(Feld) like 'BM%'
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da Query auch Views abfragen kann, musst du eine View mit berechneten Feldern, z.B. UPPER(NAME) as NAME, definieren. Dann klappt das auch.
    Einfacher ist sicherlich SQL.
    Der Vorteil von Query, Ausgabedateien erstellen zu lassen geht ja auch inzwischen mit SQL:

    create table bla as
    (select * from blub where ...)
    with data.

    Vorsicht beim Umstellen von QRYDFN mit SQL-Erstellung.
    Die diversen Verknüpfungen von Query werden gerne als Inner Join, statt z.B. left join erzeugt.
    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
    Jun 2015
    Beiträge
    336
    danke schon mal an alle Helfenden. Ich probiere das alles mal aus. Schönen Abend noch.

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Vielleicht genügt es schon im Query als Sortierfolge die Auswahl 2=Query für IBM i Deutsch auszuwählen!?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Stimmt, das beträfe dann alle Felder:
    https://www.ibm.com/docs/de/i/7.5?to...-sort-sequence
    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

  7. #7
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Ich weiß ja nicht wie oft ich den Text lesen muß um ihn zu verstehen. Vermutlich werde ich alt:

    IBM DB2 Query Manager and SQL Development Kit for i

    Das Lizenzprogramm IBM® Db2® Query Manager and SQL Development Kit for i nimmt keine bestimmte CCSID an, wenn die Quelle vorkompiliert wird. Es wird davon ausgegangen, dass alle Variantenzeichen in der Sprachsyntax, wie z. B. das Symbol nicht (¬), in der CCSID der Quellendatei codiert sind.
    Wenn die Quellendatei beispielsweise die CCSID 00037 hat, wird das Symbol not korrekt als Codepunkt X'5F' interpretiert. Wenn die Quellendatei jedoch eine CCSID von 00500 hat, wird das Symbol nicht korrekt als Codepunkt X'BA ' interpretiert.
    Ein Literal wird in der CCSID der Quellendatei gespeichert.
    Das Lizenzprogramm IBM Db2 Query Manager and SQL Development Kit for i ruft den Compiler für die entsprechende Sprache auf, um ein SQL-Programm zu erstellen. Daher müssen Sie die allgemeinen Richtlinien für höhere Programmiersprachen beachten.


    GG 2634

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von KingofKning Beitrag anzeigen
    Ich weiß ja nicht wie oft ich den Text lesen muß um ihn zu verstehen. Vermutlich werde ich alt:

    IBM DB2 Query Manager and SQL Development Kit for i

    Das Lizenzprogramm IBM® Db2® Query Manager and SQL Development Kit for i nimmt keine bestimmte CCSID an, wenn die Quelle vorkompiliert wird. Es wird davon ausgegangen, dass alle Variantenzeichen in der Sprachsyntax, wie z. B. das Symbol nicht (¬), in der CCSID der Quellendatei codiert sind.
    Wenn die Quellendatei beispielsweise die CCSID 00037 hat, wird das Symbol not korrekt als Codepunkt X'5F' interpretiert. Wenn die Quellendatei jedoch eine CCSID von 00500 hat, wird das Symbol nicht korrekt als Codepunkt X'BA ' interpretiert.
    Ein Literal wird in der CCSID der Quellendatei gespeichert.
    Das Lizenzprogramm IBM Db2 Query Manager and SQL Development Kit for i ruft den Compiler für die entsprechende Sprache auf, um ein SQL-Programm zu erstellen. Daher müssen Sie die allgemeinen Richtlinien für höhere Programmiersprachen beachten.


    GG 2634
    ... das ist dasselbe, wie bei Programmen mit embedded SQL. Da wird ebenfalls die CCSID der Quelldatei an die Datenbank weitergegeben, die dann alles in diese CCSID umsetzt, was nicht explizit gecastet wird.

    D*B

    PS: zum eigentlichen Thema: gab's da nicht die Uralt Variante mit einer gefummelten Sortierfolge?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    I.d.R. sind Textkonstanten in der CCSID der Quelldatei kodiert.
    Nun kann es theoretisch vorkommen, dass Copy-Quellen eine abweichende CCSID aufweisen.
    Passieren tut folgendes:
    Ist der Job zur Kompilierzeit mit CCSID 65535 kodiert, erfolgt beim Lesen der Quelle keine Umwandlung in die JOB-CCSID. Die beteiligten Kopierstrecken werden laut IBM in die CCSID der 1. Quelle gewandelt.
    Hat der Job eine CCSID wie 1141, erfolgt wie immer beim Lesen eine Umwandlung der Quellen in die Job-CCSID.
    Nun kommt es auf die Laufzeitumgebung an!
    Hat der Job zur Laufzeit die CCSID 1141 erfolgt beim Lesen und Schreiben immer eine Umwandlung von/in den Job und die eingebettete Konstante passt.
    Hat der Job aber zur Laufzeit z.B. die CCSID 037 wird die eingebettete Konstante von 037 in die CCSID 1141 der Tabelle gewandelt, was allerdings einen vollkommen anderen Codewert bedeutet.

    Dies ist unter den sog. varianten Zeichen einer Codetabelle zu verstehen. Dies sind Zeichen, die je nach CCSID einen anderen Codepoint, also Hexwert, aufweisen.

    Es gibt daher die Empfehlung:
    Textkonstanten in Programmen mit varianten Zeichen zu vermeiden und zur Laufzeit aus einer Tabelle mit CCSID zu lesen.
    Desweiteren ist es grundsätzlich erforderlich dass jeder Job eine von 65535 abweichende CCSID haben muss, was i.d.R. durch den Systemwert QCCSID oder den Sprachschlüssel im Userprofil definiert wird.

    Aber das erzähle ich hier ja bereits seit über 20 Jahren;-).
    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

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    I.d.R. sind Textkonstanten in der CCSID der Quelldatei kodiert.
    Nun kann es theoretisch vorkommen, dass Copy-Quellen eine abweichende CCSID aufweisen.
    Passieren tut folgendes:
    Ist der Job zur Kompilierzeit mit CCSID 65535 kodiert, erfolgt beim Lesen der Quelle keine Umwandlung in die JOB-CCSID. Die beteiligten Kopierstrecken werden laut IBM in die CCSID der 1. Quelle gewandelt.
    Hat der Job eine CCSID wie 1141, erfolgt wie immer beim Lesen eine Umwandlung der Quellen in die Job-CCSID.
    Nun kommt es auf die Laufzeitumgebung an!
    Hat der Job zur Laufzeit die CCSID 1141 erfolgt beim Lesen und Schreiben immer eine Umwandlung von/in den Job und die eingebettete Konstante passt.
    Hat der Job aber zur Laufzeit z.B. die CCSID 037 wird die eingebettete Konstante von 037 in die CCSID 1141 der Tabelle gewandelt, was allerdings einen vollkommen anderen Codewert bedeutet.

    Dies ist unter den sog. varianten Zeichen einer Codetabelle zu verstehen. Dies sind Zeichen, die je nach CCSID einen anderen Codepoint, also Hexwert, aufweisen.

    Es gibt daher die Empfehlung:
    Textkonstanten in Programmen mit varianten Zeichen zu vermeiden und zur Laufzeit aus einer Tabelle mit CCSID zu lesen.
    Desweiteren ist es grundsätzlich erforderlich dass jeder Job eine von 65535 abweichende CCSID haben muss, was i.d.R. durch den Systemwert QCCSID oder den Sprachschlüssel im Userprofil definiert wird.

    Aber das erzähle ich hier ja bereits seit über 20 Jahren;-).
    ... das dumme ist nur, dass das im Client Server Umfeld nicht immer funktioniert, da die CCSID des anfordernden Jobs nicht weitergegeben wird, sondern die CCSID der Quelldatei. (Wie ich bei ArdGate leider feststellen musste). Da kommt man dann wieder mit Unicode drumherum.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Stimmt. Mich dünkt Du sagtest es bereits das ein oder ander mal ;-)

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ja, stimmt auch.
    Seit ILE wird die CCSID der Quelldatei im Modul vermerkt, das kann man auch nachsehen.
    Wenn allerdings der Job trotzdem auf Hex 65535 steht und man Unicodedaten in A-Variablen lesen will, streikt das System, da ja die Zielccsid unbekannt ist, denn beim Lesen/Schreiben gilt die Job-CCSID.
    Die Quell-CCSD wird anscheinend nur bei Konstanten verwendet.
    Du kannst das Feld natürlich als UCS2 mit CSID 1200 definieren. Aber auch die Runtime will dann bei einem Move/Eval von/in A-Felder eine gültige CCSID haben.
    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. Satzformat in Query in Query angeben?
    By JonnyRico in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 31-03-03, 16:21
  2. Codepage Frage
    By Manfred in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-09-01, 16:23
  3. Frage zu QRY-Performance
    By hs in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 27-08-01, 12:29
  4. Query/400 Frage
    By xcut in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 24-08-01, 13:08
  5. Frage zu VisualAge for Java
    By STJ in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 27-04-01, 07:49

Berechtigungen

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