1

我的查询中有这一行:

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

但这不起作用。Firebird 说Can't Prepare ,因为查询是空的,当我删除; 它说令牌未知 - 第 8 行,第 10 列。(。

我想使用 IF ELSE 来查看TEST_DESC字段是否包含OPEN,如果有,它将在字段中输出单词OPEN。TEST_DESC 字段包含SCL_OPEN我只想显示OPEN。另一个是另一个值包含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 常见问题解答条目

于 2013-10-21T03:24:03.207 回答