我有一個臨時表,其中一列有數字整數值。我想要根據某些條件用字符值替換整數值,或者我想添加另一個字符類型的列,它會根據某些條件自動將值插入到自身中。SQL - Informix - 將數據的數據類型從數字更改爲字符
如果x < = 1,切換到「SP」或該行中做出新的列和存儲「SP」
如果x> 1時,變更爲「FA」,或進行在該新的列和存儲「FA」行
另外,在我的Informix版本的臨時表中不允許使用alter命令。
我有一個臨時表,其中一列有數字整數值。我想要根據某些條件用字符值替換整數值,或者我想添加另一個字符類型的列,它會根據某些條件自動將值插入到自身中。SQL - Informix - 將數據的數據類型從數字更改爲字符
如果x < = 1,切換到「SP」或該行中做出新的列和存儲「SP」
如果x> 1時,變更爲「FA」,或進行在該新的列和存儲「FA」行
另外,在我的Informix版本的臨時表中不允許使用alter命令。
SELECT ID,YR,CASE WHEN yr_offset < = 1,則 「SP」 ELSE 「FA」 END CASE
http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls909.htm
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;
難道您沒有完成CASE語句嗎? – avgbody 2009-02-10 20:19:29
你是正確的,你不能改變一個臨時表。添加這種衍生價值一個額外的列可以用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, ...
它有助於指定IDS的版本 - 或其他Informix數據庫服務器 - 特別是如果您不得不提及「在我的版本中」。 – 2009-02-11 01:40:48
我不必提及,我不認爲 - 我如何獲得版本?似乎沒有人知道它,並且我們的手冊已經過時 – CheeseConQueso 2009-02-12 21:27:53