进步DB SQL
LIKE操作我试图做这样的事情进展SQL(这不是POSTGRES!)进步DB SQL
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
但是进展不支持LIKE操作。 INSTR
看起来像它可能做的工作,但它是一个进展扩展和我使用的数据库不支持。有没有另外一种使用标准ODBC函数来实现这个功能的方法
感谢
有一个在进步4GL没有LIKE
运营商。 (有一个LIKE
关键字,但它被用于不同的东西。)相反,你需要使用MATCHES
或CONTAINS
运营商。我从来没有使用过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
你可以用火柴尝试(相同的语法比等),也许这工作。
有趣的是,我使用的OpenEdge 10名司机这似乎并不支持像 – Tarski
呀真的,我误会你在哪里使用LIKE操作符。无论如何,比赛应该工作。 – pedromarce
什么版本的进度您使用的是10.0? 10.1? 10.2?
您使用的是嵌入式SQL-89从4GL会话中或者是你通过ODBC/JDBC连接使用SQL-92?这听起来像你使用SQL-92,因为你引用了“drivers”和INSTR。
在任何情况下,没有像SQL。 INSTR和LOCATE可能会做你想要的。
匹配时,仅可作为一个4GL关键字。要在SQL中使用它,您需要使用嵌入式SQL-89,但是没有人会在4GL会话中编写SQL代码。这只是作为一个营销复选框,它是一个完全站不住脚的方式来编写4GL代码。
刚刚发现了这个问题以及任何可能仍然存在问题的人,我建议使用SquirrelSQL客户端,它允许您将几乎100%的SQL语法写入Progress基础。像包括
MATCHES的对面是 - 不是myVariable MATCHES'* foo *' –