Операторы SQL CASE для Informix. Можно ли задать более одного поля в разделе END блока case? - PullRequest
2 голосов
/ 19 октября 2010

Использование 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 ]

2 голосов
/ 19 октября 2010

Обычно, я бы попросил версию Informix, которую вы используете, но в этот раз, вероятно, это не имеет большого значения. Простой ответ - «Нет».

Более сложный ответ может обсуждаться с использованием конструктора типа строки, но это, вероятно, не то, что вы хотите в выводе. И, учитывая вышесказанное, тогда ОБНОВЛЕНИЕ не будет работать (и потребует дополнительного уровня скобок, если это будет).

1 голос
/ 19 октября 2010

Нет, оператор CASE преобразуется в выражение (см. Руководство IBM Informix по SQL: выражения синтаксиса CASE ) и может использоваться в местах, где выражение разрешено. Выражение - это одно значение.

от http://en.wikipedia.org/wiki/Expression_%28programming%29

выражение в программировании язык представляет собой сочетание явного значения, константы, переменные, операторы и функции, которые интерпретируется в соответствии с конкретные правила приоритета и ассоциация для конкретного язык программирования, который вычисляет а затем производит (возвращает, в состояние среды) другое значение.

0 голосов
/ 19 апреля 2017

Найденный простой способ сделать это находится здесь: как изменить цвет строки списка в зависимости от данных в строке

Решением было просто добавить оператор case в мой оператор sql,Просто сделать мою жизнь намного проще.

...