[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.217
    Wie kann ich das denn im RPG (embedded sql) verwenden? Irgenwie müsste ich dem SQL dann ja sagen, dass die Sortierfolge verwenden soll.



    Zitat Zitat von Pikachu Beitrag anzeigen
    Probier mal mit Sortierfolge *LANGIDSHR:

    1) Logische Datei mit CRTLF FILE(Bibliothek/Datei) SRTSEQ(*LANGIDSHR) anlegen

    2) STRSQL SRTSEQ(*LANGIDSHR)

    3) SELECT Name FROM Bibliothek/Datei WHERE Name LIKE '%Meier%'

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.749
    Hierzu betrachte mal den Like:

    Like '%xxx%' => Kein Index möglich!
    Like 'xxx%' => Index möglich

    Der Grund ist eben, dass ein Index ja nicht über jeden Teilschlüssel (Substring) erstellt wird sondern über den gesamten Wert.
    Ein Like '%...' erzwingt immer eine Tablescan, solange nicht andere Felder in der Whereklausel Indexverwendungen ermöglichen.

    Wenn man ähnlich klingende Schlüssel sucht, kann man SOUNDEX() verwenden, wobei hier ein ggf. vorhandener berechneter Index verwendet werden kann:

    where soundex(Namensfeld) = soundex('Meier')

    in diesem Fall werden Meier, aber auch Meyer o.ä. geliefert.

    Apropo embedded SQL:
    exec sql set options ....
    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. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.217
    Klar, dass er nicht binär suchen kann. Aber wenn ein Index so aufgebaut wäre, dass alle Zeichen des Namens in Kleinbuchstaben gespeichert sind, könnte er den Tablescan dann ja auf dem Index machen, anstatt das echte Dateifeld zu nehmen. Das "echte" Dateifeld müsste er ja immer erst in Kleinbuchstaben umwandeln, bevor er die like-Suche auf dem feld macht.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Hierzu betrachte mal den Like:

    Like '%xxx%' => Kein Index möglich!
    Like 'xxx%' => Index möglich

    Der Grund ist eben, dass ein Index ja nicht über jeden Teilschlüssel (Substring) erstellt wird sondern über den gesamten Wert.
    Ein Like '%...' erzwingt immer eine Tablescan, solange nicht andere Felder in der Whereklausel Indexverwendungen ermöglichen.

    Wenn man ähnlich klingende Schlüssel sucht, kann man SOUNDEX() verwenden, wobei hier ein ggf. vorhandener berechneter Index verwendet werden kann:

    where soundex(Namensfeld) = soundex('Meier')

    in diesem Fall werden Meier, aber auch Meyer o.ä. geliefert.

    Apropo embedded SQL:
    exec sql set options ....

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.749
    Ja und nein.
    Ein Indexonly-Zugriff erfolgt ausschließlich, wenn auch nur Felder im Select verwendet werden, die im Index vorkommen.

    Also ein
    "select name where name like '%xxx%'"
    mag dann schneller sein.

    Für den Indexonly-Zugriff wäre ggf. folgender Select performant, kann ich aber nicht versprechen:

    with
    xName as (
    select name
    from mytable
    where name like '%xxx%')

    select ....
    from mytable x
    inner join xName on x.name = xName.Name
    where ...
    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

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    1.217
    OK, vielen Dank für die Infos.

    Dieter

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.422
    Siehe hier: http://newsolutions.de/forum-systemi...html#post57786.

    Alternativ kannst du die Sortierfolge auch im CRTSQLRPGI angeben.

    Zitat Zitat von dschroeder Beitrag anzeigen
    Wie kann ich das denn im RPG (embedded sql) verwenden? Irgenwie müsste ich dem SQL dann ja sagen, dass die Sortierfolge verwenden soll.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.749
    Da der Default auf *JOB verweist, kann man das ebenso dynamisch per CHGJOB erreichen, halt nur mit dem Nachteil, dass dies alle Programme des Job's betrifft.
    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. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 11:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 15:53
  3. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 15:11
  4. sql funktion
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 01-06-06, 13:16
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43

Berechtigungen

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