2012-02-23 52 views
1

表:可能獲得mysql enum在java中提交的索引值?

CREATE TABLE `table` (
    `id` int(11) NOT NULL, 
    `status` enum('on','off') NOT NULL DEFAULT 'off', 
    PRIMARY KEY (`id`), 
) 

我可以使用枚舉索引值來更新或插入:

update table set status=1 where id=12(更新ID = 2 statuson

但在Java中,枚舉字段類型總是返回String(check here)

select status from table where id=2

或使用resultSet.getObject("status")(JAVA)

總是返回字符串on,但我想要得到的整數1

這可能嗎?

回答

5
SELECT 
    CAST(`status` AS UNSIGNED) AS numerical_status 
FROM `table` 

陷阱:這是基於1的,所以您將獲得1 on和2 off

編輯

如果您不能使用計算字段(無論何種原因),創建一個視圖:

CREATE OR REPLACE VIEW `table_numstatus` AS 
    SELECT `id`, CAST(`status` AS UNSIGNED) AS `status` 
    FROM `table` ; 

並將您的查詢指向此視圖而不是表。

+0

+1,謝謝,這是有幫助的!如果我不能在JDBC中更改SQL查詢,我可以這樣做嗎? – Koerr 2012-02-23 09:48:12

+0

編輯我的答案。 – 2012-02-23 09:52:15

0

也許這不是你要找的,但作爲解決方案,您可以根據其價值在客戶端創建Java的枚舉和轉換

+0

感謝您的幫助,JDBC中的任何解決方案? – Koerr 2012-02-23 09:39:41