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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top