質問

私は進行中の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コードを書くための完全に受け入れられない方法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top