2012-02-29 13 views
0

から数値を取得、ENUMカラムから数値を取得するためにENUM列の問題

mysql> SELECT enum_col+0 FROM tbl_name; 

reference here

しかし、私のmysql5.5コンソールで、この問合せの戻り使用することができます。

1.0000000000000000000000000000000 

私は整数1

を取得したい

私が使用することができます知っている:

SELECT CONVERT(enum_col,UNSIGNED) FROM tbl_name; 

または

SELECT CAST(enum_col AS UNSIGNED) FROM tbl_name; 

私はfloatを返すenum_col+0理由を知りたい、

とENUM列から数値を取得する他の方法はありますか?

答えて

1

この記事を見てください - Type Conversion in Expression Evaluation; MySQLがさまざまなタイプ間でどのように変換を行うかを記述しています。あなたの場合、浮動小数点値として結果を得るいくつかの規則があります。

...と別の変形試してみてください。

SELECT TRIM(TRAILING ')' FROM TRIM(LEADING '(' FROM TRIM(LEADING 'enum' FROM column_type))) INTO @enum 
    FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'tbl_name' AND COLUMN_NAME = 'enum_col'; 

SELECT FIND_IN_SET(CONCAT('''', enum_col, ''''), @enum) FROM tbl_name 

するか、この1:

SELECT REPLACE(TRIM(TRAILING ')' FROM TRIM(LEADING '(' FROM TRIM(LEADING 'enum' FROM column_type))), '''', '') INTO @enum 
    FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'tbl_name' AND COLUMN_NAME = 'enum_col'; 

SELECT FIND_IN_SET(enum_col, @enum) FROM tbl_name 
関連する問題