我在我的數據庫非常簡單的評級系統,其中每個等級存儲爲一個枚舉(「1」,「 - 1」)。計算總我試着用這樣的說法:問題:Mysql的轉換枚舉爲Int
SELECT SUM(CONVERT(rating, SIGNED)) as value from table WHERE _id = 1
也能正常工作的正面1,但由於某些原因,-1被解析出來2的。
任何人都可以幫助或提供煽動?
或者我應該放棄,只是更改列的符號int(1)?
我在我的數據庫非常簡單的評級系統,其中每個等級存儲爲一個枚舉(「1」,「 - 1」)。計算總我試着用這樣的說法:問題:Mysql的轉換枚舉爲Int
SELECT SUM(CONVERT(rating, SIGNED)) as value from table WHERE _id = 1
也能正常工作的正面1,但由於某些原因,-1被解析出來2的。
任何人都可以幫助或提供煽動?
或者我應該放棄,只是更改列的符號int(1)?
是的,我建議更改列的類型。當您閱讀doc about enum type(強烈建議不要使用數字作爲枚舉值!)時,問題就變得很清楚 - - 枚舉項的索引被返回,而不是枚舉值本身。
使用
SELECT SUM(IF(columnname >0, CAST(columnname AS CHAR) , NULL)) AS vals
FROM `tableName`
嗨!這有什麼幫助?隨意解釋更多,並使用[代碼格式](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)。 –
玉傢伙,
只是有一點單純的時間與這一個。我瞭解到,我不應該在整數是值時使用ENUM。然而,我們有數年的數據,我無法改變數據庫。
這個壞小子的工作(把它變成一個字符,然後進入一個符號整型)。
CAST(CAST(`rating` AS CHAR) AS SIGNED) as value from table WHERE _id = 1
這是你想要
select enum+0 as enum
這是什麼轉換爲int
在MySQL的enum
只可能:
CAST(CAST(`rating` AS CHAR) AS SIGNED) as value from table WHERE _id = 1
這應該是公認的解決方案 –
那麼,它會更加的描述來改變枚舉值'上'和'下'! –
也許,但是如果他需要做很多這種「評級算術」,它很快就會變得單調乏味(而且速度很慢)......使用「普通整數值」進行操作要簡單得多。 – ain
是的,我發佈了這個問題後繼續改變它。謝謝你的解釋。非常有幫助 – NSjonas