HotTip: RPG-Funktion zur Text-Suche über das SQL-Prädikat LIKE

11. November 2008 | Von | Kategorie: Tools, Hot-Tips

Ein NEWSolutions online Artikel: SQL bietet viele Funktionen und Prädikate, die in RPG entweder überhaupt nicht oder nicht in der gleichen Form wie in SQL vorhanden sind. In vielen modernen Anwendungen muss es möglich sein Texte nach bestimmten Kriterien zu scannen. SQL bietet für solche Suchen das SQL Prädikat LIKE.

Autor
Brigitta Hauser, mit freundlicher Genehmigung von iNN eNews

SQL bietet viele Funktionen und Prädikate, die in RPG entweder überhaupt nicht oder nicht in der gleichen Form wie in SQL vorhanden sind. In vielen modernen Anwendungen muss es möglich sein Texte nach bestimmten Kriterien zu scannen. SQL bietet für solche Suchen das SQL Prädikat LIKE.

Die Frage ist nun, ob und wie es möglich ist das SQL Prädikat LIKE direkt in RPG zu verwenden.

Wie funktionniert überhaupt eine Text-Suche über das LIKE Prädikat?

Es werden zwei unterschiedliche Platzhalter verwendet:

  • Das Prozent-Zeichen (%):
    gibt eine unbestimmte Anzahl an beliebigen Zeichen an. Wird der Suchstring mit ‚%AB%C%‘ angegeben sind ‚ABxxxxC‘ sowie ‚xxABCxxx‘ gültige Zeichenfolgen.
  • Underline (_):
    gibt genau ein beliebiges Zeichen an. Wird der Suchstring mit ‚%AB_C%‘ angebeben, so ist ‚ABxCxxx‘ gültig, nicht jedoch ‚ABxxxxC‘ oder ‚xxABCxxx‘

Da Prozent und Underline als Platzhalter verwendet werden, wie kann man dann nach einem Text suchen, der z.B. ein Prozent-Zeichen enthält?

Dazu muss man ein beliebiges Zeichen dem Platzhalter, nach dem gesucht werden soll, voranstellen z.B. ‚%100!%%‘. In diesem Fall wird das Ausrufezeichen als Sonderzeichen verwendet.

Da jedes beliebige Zeichen verwendet werden kann, muss das Sonderzeichen mit ESCAPE ‚Sonderzeichen‘ direkt hinter dem Such-String angegeben werden.

Wird also nach dem Text ‚100%‘ gesucht, muss das Select-Statement etwa wie folgt aussehen:


     Select   MyField
        from  MyTSchema/MyTable
        where MyField like '%100!%%' escape '!'

Wie verwendet man das LIKE-Prädikat, um in embedded SQL nach einem Text-String zu suchen?

Da es sich bei dem Prädikat und keine Funktion handelt, und somit nicht direkt in ein SET-Statement eingebunden werden. Aber es ist möglich in einer SET-Anweisung eine CASE-Anweisung (Vergleich) zu verwenden.

In der folgenden kleinen RPG-Funktion wird Found auf ‚1‘ gesetzt, wenn der Such-String im Text-String enthalten ist. Anderenfalls wird Found mit ‚0‘ ausgegeben. Je nach dem, ob der 3.Parameter (ESCAPE) übergeben wurde, werden unterschiedliche SET-Statements ausgeführt.

Die RPG-Funktion hat 3 Parameter:

Schlagworte: , , , , , , , , , , , , , , ,

Ein Kommentar auf "HotTip: RPG-Funktion zur Text-Suche über das SQL-Prädikat LIKE"

  1. Markus sagt:

    Jahre später …
    Vielen Dank für den sehr hilfreichen Artikel! Die Like-Funktion an sich ist schon interessant. Zusätzlich habe ich durch das Beispiel viele weitere Anregungen bekommen. (Dabei war ich eigentlich nur auf der Suche nach einer Beschreibung der Werte für die Option SRTSEQ bei CHGPF.)

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.