我试图做这样的事情进展SQL(这不是Postgres的!)

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

然而进展不支持LIKE运算符。 INSTR看起来像它可能做的工作,但它是一个进步的扩展上不支持我使用的数据库。有没有达到这个使用标准的ODBC函数的另一种方式?

由于

有帮助吗?

解决方案

有在进展4GL没有LIKE运算符。 (有一个LIKE关键字,但它被用于不同的东西。)相反,你需要使用MATCHESCONTAINS运营商。我从来没有使用一个SQL接口的进展,但它可以是相同的。

所以,你可以尝试:

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

注 - MATCHES使用*为一个通配符,而不是%

或者:

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

其他提示

刚刚发现这个问题,任何人谁可能仍然有它的问题,我建议使用SquirrelSQL客户端,它允许你写朝着进步的基础几乎100%的SQL语法。像包括

您可以用火柴(相同的语法比等),也许是工作的尝试。

您正在使用什么版本的进度10.0? 10.1? 10.2?

您使用的,您在通过ODBC / JDBC连接使用SQL-92嵌入从4GL会话内或SQL-89?这听起来像您使用SQL-92,因为你提到“驱动器”和INSTR。

在任何情况下,没有像SQL。有INSTR,并找到可能会做你想要什么,虽然

匹配时,仅提供4GL关键字。在SQL中使用它,你就需要使用嵌入式SQL-89,但没有人在他们的脑子会编写一个4GL会话中的SQL是。它只是有作为营销复选框,它是写4GL代码完全站不住脚方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top