Progress DB SQLのオペレーターのように
-
19-09-2019 - |
質問
私は進行中のSQLでこのようなことをしようとしています(これは事後ではありません!)
SELECT
CASE WHEN code LIKE '%foo%' THEN 'Y' ELSE 'N' END as foo
FROM
bar
ただし、進捗は同様のオペレーターをサポートしていません。 INSTR
それは仕事をするかもしれないように見えますが、それは私が使用しているDBではサポートされていない進歩拡張です。標準のODBC関数を使用してこれを達成する別の方法はありますか?
ありがとう
解決
ありません LIKE
Progress 4GLのオペレーター。 (aがあります 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
他のヒント
この質問を見つけたばかりで、まだ問題を抱えている可能性のある人には、RisrrelsQLクライアントを使用することをお勧めします。含まれているような
マッチ(同じように同じ構文)で試すことができ、それが機能するかもしれません。
10.0を使用しているバージョンの進行状況は何ですか? 10.1? 10.2?
4GLセッション内から組み込みSQL-89を使用していますか、それともODBC/JDBC接続を介してSQL-92を使用していますか? 「ドライバー」とインストルに言及したため、SQL-92を使用しているように聞こえます。
いずれにせよ、SQLには類似性がありません。あなたが望むことをするかもしれない楽器と場所があります。
マッチは4GLキーワードとしてのみ利用できます。 SQLで使用するには、埋め込まれたSQL-89を使用する必要がありますが、4GLセッション内でSQLをコードする人はいません。それはマーケティングチェックボックスとしてのみそこにあり、4GLコードを書くための完全に受け入れられない方法です。