1

クエリに次の行があります。

IF (TEST_DESC CONTAINING 'OPEN') THEN TEST_DESC = 'OPEN';

しかし、それは機能していません。;を削除すると、クエリが空であるため、 Firebird はCan't Prepare と表示します。Token unknown - 行 8、列 10 と表示されます。 (.

IF ELSE を使用して、TEST_DESCフィールドにOPENが含まれているかどうかを確認したいと思います。含まれている場合は、フィールドにOPENという単語が出力されます。TEST_DESC フィールドにはSCL_OPENが含まれています。 OPENだけを表示したいのです。もう1つは、他の値にDRV_SHORTが含まれていることで、 SHORTのみを表示したいです。

前もって感謝します!

4

1 に答える 1

4

IF/THEN/ELSE はPSQL コンストラクトです。

構文エラーから使用していると推測されるプレーンな SQL クエリの場合は、CASE ステートメントを使用します。

...
CASE
WHEN TEST_DESC LIKE '%OPEN%'
     THEN 'OPEN'
WHEN TEST_DESC LIKE '%SHORT%'
     THEN 'SHORT'
ELSE 'UNKNOWN'
END
...

おおよそ必要な構文を持つIIF()関数 もありますIIF(TEST_DESC CONTAINING 'FOO', 'FOO', 'NO FOO')

このFirebird FAQ エントリも参照してください。

于 2013-10-21T03:24:03.207 に答える