SQL - Informix - Изменение типа данных столбца с числового на символьный - PullRequest
1 голос
/ 10 февраля 2009

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

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

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

Ответы [ 3 ]

1 голос
/ 10 февраля 2009

SELECT id, yr, CASE, WHY yr_offset <= 1 THEN "SP" ELSE "FA" END CASE </p>

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

1 голос
/ 10 февраля 2009

Вы правы, вы не можете изменить временную таблицу. Добавление дополнительного столбца с этим производным значением может быть сделано с помощью оператора 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 в руководстве

0 голосов
/ 10 февраля 2009
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...