SQL - Informix - Изменение типа данных столбца с числового на символьный

StackOverflow https://stackoverflow.com/questions/533879

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть временная таблица, содержащая целочисленные значения в одном столбце.Я хочу либо заменить целочисленные значения символьными значениями на основе некоторых критериев, либо добавить еще один столбец символьного типа, который автоматически вставляет в себя значения на основе некоторых критериев.

Если x <= 1, измените на «SP» или создайте новый столбец и сохраните «SP» в этой строке.
Если x > 1, измените на «FA» или создайте новый столбец и сохраните «FA» в этой строке.

Кроме того, в моей версии Informix команды изменения не разрешены для временных таблиц.

Это было полезно?

Решение

ВЫБЕРИТЕ идентификатор, год, CASE WHEN yr_offset <= 1 THEN "SP" ELSE "FA" END CASE

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls909.htm

Другие советы

Вы правы, вы не можете изменить временную таблицу.Добавление дополнительного столбца с этим производным значением можно выполнить с помощью CASE заявление, то есть:

SELECT enroll.ud, enroll.yr, (CASE
   WHEN enrollsess.yr_offset <=1 THEN "FA"
   ELSE "SP" END)::CHAR(2) AS sess, ...

Приведение (т.е. круглые скобки и ::CHAR(2)), вероятно, не нужны.

Если логика может быть выражена как нулевая/ненулевая (в вашем примере неясно, может ли yr_offset быть отрицательным), то все еще проще:

SELECT enroll.id, enroll.yr,
     DECODE(enrollsess.yr_offset, 0, "FA", "SP")::CHAR(2) AS sess, ...

Более подробная информация о синтаксисе CASE приведена в руководстве.

SELECT          enrollsess.id,
                enrollsess.yr,
                "SP" sess
FROM            enrollsess
WHERE           enrollsess.yr_offset <= 1
UNION
SELECT          enrollsess.id,
                enrollsess.yr,
                "FA" sess
FROM            enrollsess
WHERE           enrollsess.yr_offset > 1
INTO            TEMP enrollsess2 WITH NO LOG;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top