使用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;
答案 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语句中。只是让我的生活更轻松。