[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2004
    Beiträge
    34

    SQL Gross-Klein

    Hallo an alle

    habe ein grosses Problem.
    wir stellen unsere Adressen auf
    gross-Klein um, natürlich funktionier
    nun die sql suche nicht mehr
    wie kann ich es in eingebettetem SQL ausschalten

    habe schon folgendes versucht

    select * from adresse
    WHERE UPPER(ADNAM1) LIKE UPPER(:WSNAM1)
    AND UPPER(ADNAM2) LIKE UPPER(:WSNAM2)
    AND UPPER(ADNAM3) LIKE UPPER(:WSNAM3)
    AND ADPLZ LIKE :WSPLZ
    AND UPPER(ADABT) LIKE UPPER(:WSABT)
    AND UPPER(ADORT) LIKE UPPER(:WSORT)
    AND UPPER(ADSTR) LIKE UPPER(:WSSTR)
    ORDER BY ADKDNR, ADLFNR
    FOR FETCH ONLY
    OPTIMIZE FOR 999 ROWS

    leider funktioniert das nicht
    wie bekomme ich also beide seiten auf Grossschrift ??

    Danke
    Thomas

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Was steht denn z.B. in :WSNAM1, :WSNAM2, :WSNAM3, :WSPLZ, usw.? Sind da auch die %-Zeichen mit enthalten?

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Hallo,

    Du kannst auch die Sortierreihenfolge von *Hex auf *LangIdShr ändern.

    Bei dieser Sortierreihenfolge erhalten Groß- und Klein-Buchstaben die gleiche Wertigkeit.
    Wenn z.B. mit Like 'Meier%' gesucht wird, werden alle Meiers egal ob MEIER, Meier, meier oder mEier geschrieben selektiert.
    In der Sortierung werden diese Meiers in der folgenden Reihenfolgen ausgegeben: meier, mEier, Meier, MEIER

    Das ganze Gefuddel mit den UPPER und LOWER-Anweisungen kann man sich dann sparen.

    Um die Sortierreihenfolge zu ändern genügt es in Deinen Embedded SQL Programmen eine SET OPTION - Anweiseung einzufügen.

    PHP-Code:
    C/EXEC SQL   Set Option SrtSeq = *LangIdShr
    C
    /END-EXEC 
    Achtung: Es kann nur eine einzige SET OPTION-Anweisung in einem Programm geben und diese muss seit Release V5R4 physich vor allen anderen SQL-Statements in der Quelle stehen. Am besten man gibt die SET OPTION-Anweisung als 1. C-Statement an.

    Noch ein kleiner Hinweis: Zugriffswege (DDS-beschriebene logische Datein oder SQL Indices sollten dann auch mit dieser Sortierreihenfolge erstellt werden.

    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

  4. #4
    Registriert seit
    Dec 2004
    Beiträge
    34
    hallo

    leider funktionier
    C*************************************
    C/EXEC SQL
    C+ SET OPTION SRTSEQ=*LANGIDSHR
    C/END-EXEC
    C*************************************
    nicht,
    obwohl ich sie am anfang stehen habe.

    in den variablen steht
    EVAL WSNAM1 = '%' + %TRIM(WSNAM1) + '%'

    ev eine andere Idee ?

    gruss
    Thomas

  5. #5
    Registriert seit
    Dec 2004
    Beiträge
    34
    Zitat Zitat von Pikachu Beitrag anzeigen
    Was steht denn z.B. in :WSNAM1, :WSNAM2, :WSNAM3, :WSPLZ, usw.? Sind da auch die %-Zeichen mit enthalten?


    ja
    folgender aufbau
    EVAL WSNAM1 = '%' + %TRIM(WSNAM1) + '%'
    EVAL WSNAM2 = '%' + %TRIM(WSNAM2) + '%'
    EVAL WSNAM3 = '%' + %TRIM(WSNAM3) + '%'

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Kann es sein, dass die Felder WSNAM1 usw. fixe Länge haben?

    Wenn ja bringt es Dir natürlich nichts die Blanks abzutrimmen und ein einzelnes Prozentzeichen dahinter zusetzten, die Reste werden weiterhin mit Blanks aufgefüllt.

    Man kann das Ganze natürlich auch direkt im SQL handeln:

    PHP-Code:
    ... Like Upper(MyFldLike '%' concat UPPER(TRIM(:MyVar)) Concat '%' 
    ... und was die Sortierreihenfolge angeht, wenn es nicht funktioniert musst Du was falsch machen. Ich habe solche Spielereien in einigen Programmen und noch nie Probleme damit gehabt.

    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
    Dec 2004
    Beiträge
    34
    Hi
    Danke das Hat geklappt - felder
    waren fixe länge.
    aber das mit der Sorttierreihenfolge klappt
    immer noch nicht, ev sind ein paar
    Systemparameter nicht dafür eingestellt

    Trotzdem danke
    Gruss
    Thomas

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Hallo Thomas,

    Zitat Zitat von THH Beitrag anzeigen
    Hi
    aber das mit der Sorttierreihenfolge klappt
    immer noch nicht, ev sind ein paar
    Systemparameter nicht dafür eingestellt
    hast Du's mal interaktiv versucht?
    STRSQL
    F13 --> Auswahl 1 --> Zweite Seite Sortierreihenfolge ändern
    --> SQL-Statement ausführen.

    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

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  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
  •