-
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
-
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.
-
Danke vielmals und wieder was gelernt.
-
Zitat von Fuerchau
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'
-
%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
-
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.
-
Wenns nicht übermäßig viele Datensätze sind, wär vielleicht auch ein SQL-LIKE mit % direkt vor und nach dem Vergleichswert möglich.
-
... 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
Similar Threads
-
By tarkusch in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 02-06-14, 09:45
-
By Ludger Muhmann in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 30-07-02, 09:49
-
By Joshua in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 11-04-02, 09:42
-
By Stefan_R in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 12-10-01, 09:47
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks