Informix上的SQL CASE语句 - 您可以在案例块的END部分设置多个字段吗?

时间:2010-10-19 18:41:08

标签: sql select sql-update informix sql-insert

使用IBM Informix Dynamic Server版本10.00.FC9

我希望用一个CASE块设置多个字段值。这可能吗?我是否必须为每个字段集重新评估相同的条件?

我正在考虑这些问题:

SELECT CASE WHEN p.id = 9238 THEN ('string',3) END (varchar_field, int_field);

THEN部分将定义类似于

语法的“数组”字段

INSERT INTO table (field1,field2) values (value1,value2)

此外,可以使用CASE声明的UPDATE块来完成吗?

UPDATE TABLE SET (field1,field2) = CASE WHEN p.id=9238 THEN (value1,value2) END;

3 个答案:

答案 0 :(得分:2)

通常情况下,我会问你正在使用的Informix版本,但这次可能并不重要。简单的答案是“不”。

更复杂的答案可能会讨论使用行类型构造函数,但这可能不是您想要的输出。并且,鉴于上述情况,那么UPDATE将不起作用(并且如果要进行则需要额外的括号级别。)

答案 1 :(得分:1)

不,CASE语句解析为表达式(请参阅IBM Informix Guide to SQL: Syntax CASE Expressions),并且可以在允许表达式的位置使用。表达式是单个值。

来自http://en.wikipedia.org/wiki/Expression_%28programming%29

  

编程中的表达式   语言是显性的组合   值,常数,变量,   运算符和函数   按照解释   特殊的优先规则和   一个特定的协会   编程语言,计算   然后生成(返回,在   有状态的环境)另一个价值。

答案 2 :(得分:0)

在这里找到一种简单的方法: how to have listview row colour to change based on data in the row

解决方案只是将case语句添加到我的sql语句中。只是让我的生活更轻松。