Question

Je suis en train de faire quelque chose comme ça en cours SQL (ce n'est pas Postgres!)

SELECT
    CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
    bar

Toutefois, les progrès ne prend pas en charge un opérateur LIKE. INSTR semble que cela pourrait faire le travail, mais il est une extension progrès ne sont pas pris en charge sur la base de données que je utilise. Y at-il une autre façon d'y parvenir en utilisant les fonctions standard ODBC?

Merci

Était-ce utile?

La solution

Il n'y a pas d'opérateur de LIKE dans le progrès 4GL. (Il y a un mot-clé LIKE, mais il est utilisé pour quelque chose de différent.) Au lieu de cela, vous devez utiliser les opérateurs de MATCHES ou CONTAINS. Je ne l'ai jamais utilisé une interface SQL pour des progrès, mais il peut être le même.

Vous pouvez essayer:

SELECT
    CASE WHEN code MATCHES '*foo*' THEN 'Y' ELSE 'N' END as foo
FROM
    bar

Note -. MATCHES utilise * pour un caractère générique au lieu de %

Ou:

SELECT
    CASE WHEN code CONTAINS 'foo' THEN 'Y' ELSE 'N' END as foo
FROM
    bar

Autres conseils

Je viens de trouver cette question et à tous ceux qui pourraient encore avoir un problème avec elle, je suggère d'utiliser SquirrelSQL client, ce qui vous permet d'écrire près de 100% la syntaxe SQL vers la base Progress. Comme inclus

Vous pouvez essayer avec MATCHS (même syntaxe que ETC.) et peut-être qui fonctionne.

Quelle version de Progress vous utilisez 10.0? 10.1? 10.2?

Utilisez-vous l'embarqué SQL-89 à partir d'une session 4GL ou utilisez SQL-92 vous via une connexion ODBC / JDBC? On dirait que vous utilisez SQL-92 depuis que vous avez fait référence à « pilotes » et INSTR.

En tout état de cause il n'y a pas pour SQL COMME. Il y a INSTR et LOCATE qui pourrait faire ce que vous voulez bien.

MATCHES est disponible uniquement en tant que mot-clé 4GL. Pour l'utiliser dans SQL vous devez utiliser SQL-89 embarqué mais personne dans leur bon esprit de code SQL dans une session 4GL. Il est seulement là comme une case à cocher de marketing et il est une façon tout à fait indéfendable d'écrire du code 4GL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top