[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    embedded sql substring

    Hallo,

    ich möchte mit Sql prüfen ob ein Kundenname schon vergeben worden ist.
    Leider ist mein Vergleichsfeld grösser.

    Ist es möglich hier ein Substring zu verwenden?

    Habe es wie folgt probiert aber hat nicht geklappt:
    Code:
    EXEC SQL                               
      SELECT COUNT(*)                      
      INTO :COUNT :MyIndikator             
      FROM KUNDENP                         
      WHERE K1NAM = :(%SUBST(F8:1:27));
    Dank im Voraus

    Tarki

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Eine Hostvariable wird immer mit Doppelpunkt eingeleitet, also:
    WHERE K1NAM = %SUBST(:F8, 1, 27)
    Außerdem werden Parameter in SQL durch Kommata getrennt.
    Die Größe des Vergleichsfeldes spielt keine Rolle, da SQL bei Zeichenfeldern immer rechts Leerzeichen annimmt.
    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
    Apr 2012
    Beiträge
    360
    Danke vielmals und wieder was gelernt.

  4. #4
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Eine Hostvariable wird immer mit Doppelpunkt eingeleitet, also:
    WHERE K1NAM = %SUBST(:F8, 1, 27)
    Außerdem werden Parameter in SQL durch Kommata getrennt.
    Die Größe des Vergleichsfeldes spielt keine Rolle, da SQL bei Zeichenfeldern immer rechts Leerzeichen annimmt.
    Ich hätte da noch eine Frage zu: "Größe des Vergeleichfeldes spielt keine Rolle, ..'

    Wie ist das gemein? Beispiel unten stimmt ja bis zu einer bestimmten länge überein dann nicht mehr.
    Ich dachte mir wenn ich mit Substring arbeite dann bin ich auf der richtigen Seite
    F1NAM = 'FA. GRUBER UND HAUSER'
    F8 = 'FA. GRUBER UND HAUSER UND SÖHNE'

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    %SUBST ist RPG und nicht SQL!
    Entweder Du legst Dir eine Host-Variable zu in der nur die ersten 27 Zeichen von F8 stehen oder Du must den Substring mit der entsprechenden SQL-Funktion machen:

    ... WHERE K1NAM = SUBSTR(:F8, 1, 27)

    oder
    ... WHERE K1NAM = Left(:F8, 27)

    Kleine Anmerkung die bessere Lösung ist auf alle Fälle die zusätzliche Host-Variable.

    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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Was den Vergleich angeht ist dein Konzept wohl falsch.
    Wenn dein DB-Feld kleiner ist als dein Herkunftsfeld ist die Wahrscheinlichkeit eines Treffers sowieso geringer. Außerdem reicht ein Leerzeichen mehr oder eine leicht andere Schreibweise aus, "Dubletten" nicht zu finden, von Groß-/Kleinschreibung ganz abgesehen.

    Kleine Schreibfehler seihen mir bitte verziehen.
    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
    Nov 2003
    Beiträge
    2.307
    Wenns nicht übermäßig viele Datensätze sind, wär vielleicht auch ein SQL-LIKE mit % direkt vor und nach dem Vergleichswert möglich.

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... für sowas gibt es unscharfe Suchalgorithmen wie SOUNDEX, der sogar als SQL Function implementiert ist (sollte man aber modifizieren, damit er Umlaute und Ligaturen vernünftig behandelt).

    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/

Similar Threads

  1. embedded sql update
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 02-06-14, 09:45
  2. EMBEDDED SQL in RPG
    By Ludger Muhmann in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 30-07-02, 09:49
  3. Datenabbildungsfehler mit embedded SQL
    By Joshua in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-04-02, 09:42
  4. Embedded SQL
    By Stefan_R in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 12-10-01, 09:47
  5. Embedded SQL/ falsche Datentypen
    By KB in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 21-08-01, 10:31

Berechtigungen

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