Wie Operator für den Fortschritt DB SQL
-
19-09-2019 - |
Frage
Ich versuche so etwas in Bearbeitung SQL zu tun (das ist keine Postgres!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
Der Fortschritt unterstützt jedoch keinen ähnlichen Operator. INSTR
Sieht so aus, als ob es den Job erledigen könnte, aber es ist eine Fortschrittserweiterung und wird auf dem DB, den ich benutze, nicht unterstützt. Gibt es eine andere Möglichkeit, dies mit Standard -ODBC -Funktionen zu erreichen?
Vielen Dank
Lösung
Es gibt kein LIKE
Operator im Fortschritt 4GL. (Da ist ein LIKE
Schlüsselwort, aber es wird für etwas anderes verwendet.) Stattdessen müssen Sie verwenden MATCHES
oder CONTAINS
Betreiber. Ich habe noch nie eine SQL -Schnittstelle verwendet, um Fortschritte zu erzielen, aber es kann dasselbe sein.
Sie könnten also versuchen:
SELECT
CASE WHEN code MATCHES '*foo*' THEN 'Y' ELSE 'N' END as foo
FROM
bar
Notiz - MATCHES
Verwendet *
für eine Platzhalter anstelle von %
.
Oder:
SELECT
CASE WHEN code CONTAINS 'foo' THEN 'Y' ELSE 'N' END as foo
FROM
bar
Andere Tipps
Ich habe gerade diese Frage gefunden und für jeden, der noch ein Problem damit hat, schlage ich vor, den Squirrelsql -Client zu verwenden, mit dem Sie fast 100% SQL -Syntax in die Fortschrittsbasis schreiben können. Wie eingeschlossen
Sie können es mit Übereinstimmungen (gleiche Syntax als wie) versuchen und vielleicht funktioniert das.
Welche Version des Fortschritts verwenden Sie 10.0? 10.1? 10.2?
Verwenden Sie die eingebettete SQL-89 innerhalb einer 4GL-Sitzung oder verwenden Sie SQL-92 über eine ODBC/JDBC-Verbindung? Es hört sich so an, als würden Sie SQL-92 verwenden, da Sie sich auf "Treiber" und Instrumente beziehen.
In jedem Fall gibt es für SQL kein wie für SQL. Es gibt Instrumente und lokalisiert, die das tun könnten, was Sie wollen.
Übereinstimmungen sind nur als 4GL -Schlüsselwort verfügbar. Um es in SQL zu verwenden, müssten Sie eingebettete SQL-89 verwenden, aber niemand bei der Vergangenheit würde SQL in einer 4GL-Sitzung codieren. Es ist nur als Marketing -Kontrollkästchen und es ist eine völlig unhaltbare Möglichkeit, 4GL -Code zu schreiben.