火鸟IF ELSE

时间:2013-10-21 01:01:37

标签: if-statement firebird

我在查询中有这一行:

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

但这不起作用。 Firebird说无法准备,因为查询为空, 当我删除; 时,它表示令牌未知 - 第8行,第10列。 (

我想使用IF ELSE查看 TEST_DESC 字段是否包含 OPEN ,如果有,则输出 OPEN 字样场。 TEST_DESC字段包含 SCL_OPEN 我只想显示 OPEN 。另一个是另一个值包含 DRV_SHORT ,我只想显示 SHORT

提前致谢!

1 个答案:

答案 0 :(得分:4)

IF / THEN / ELSE是PSQL construct

对于我推断您使用的语法错误的纯SQL查询,请使用CASE statement

...
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 entry