Pregunta

Estoy tratando de hacer algo como esto en Progreso SQL (esto no es Postgres!)

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

Sin embargo Progreso no soporta un operador LIKE. INSTR parece que podría hacer el trabajo, pero es una extensión de progreso no es compatible con la base de datos que estoy usando. ¿Hay otra manera de conseguir esto utilizando funciones ODBC estándar?

Gracias

¿Fue útil?

Solución

No hay operador LIKE en el 4GL Progreso. (Hay una palabra clave LIKE, pero se utiliza para algo diferente.) En su lugar es necesario utilizar los operadores MATCHES o CONTAINS. Nunca he utilizado una interfaz SQL a progreso, sino que puede ser la misma.

Así que usted podría intentar:

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

Nota -. MATCHES utiliza * de un comodín en lugar de %

O:

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

Otros consejos

Sólo encontrado esta pregunta y para cualquiera que todavía podría tener un problema con él se sugiere emplear SquirrelSQL cliente, lo que le permite escribir casi el 100% de sintaxis SQL hacia la base de progreso. Al igual que se incluye

Usted puede tratar con los partidos (misma sintaxis que como) y tal vez eso funciona.

¿Qué versión de Progreso está usando 10,0? 10.1? 10.2?

¿Está utilizando el SQL incorporado-89 desde una sesión de 4GL o está utilizando SQL-92 a través de una conexión ODBC / JDBC? Parece que usted está utilizando SQL-92 desde que hizo referencia a "conductores" y INSTR.

En cualquier caso no hay como por SQL. Hay INSTR y localizar lo que podría hacer lo que quiera sin embargo.

Coincidencias sólo está disponible como una palabra clave 4GL. Para usarlo en SQL que tendría que estar utilizando SQL-89 integrada, pero nadie en su sano juicio código SQL dentro de una sesión 4GL. Es sólo allí como una casilla de marketing y es una manera completamente insostenible para escribir código 4GL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top