LIKE操作我試圖做這樣的事情進展SQL(這不是POSTGRES!)進步DB SQL
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
但是進展不支持LIKE操作。 INSTR
看起來像它可能做的工作,但它是一個進展擴展和我使用的數據庫不支持。有沒有另外一種使用標準ODBC函數來實現這個功能的方法
感謝
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 *' –