爲什麼嵌套轉換不能在MySQL中工作? (它使用SQL Server)嵌套CAST不起作用
select cast(cast(myColumn as decimal(5,2)) as int) from myTable
爲什麼嵌套轉換不能在MySQL中工作? (它使用SQL Server)嵌套CAST不起作用
select cast(cast(myColumn as decimal(5,2)) as int) from myTable
根據the manual:
CAST(expr AS type)
[...]
CONVERT(expr,type)
[...]的
type
可以是以下值之一:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL[(M[,D])]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
所以,只要按照手冊:
SELECT CAST(CAST(myColumn AS DECIMAL(5,2)) AS SIGNED) FROM myTable
或
SELECT CAST(CAST(myColumn AS DECIMAL(5,2)) AS UNSIGNED) FROM myTable
此查詢正在嵌套投的概念。
投(總和(CAST(列INT)+投(列如INT))爲BIGINT)從table_name的
什麼是你試圖完成付款?作爲'UNSIGNED'投射的目的是什麼?只有這樣才能將結果數據解釋爲有符號的「INT」?這不會和直接做CAST(myColumn AS INT)'有相同的效果嗎? – eggyal 2012-04-27 09:05:10
@eggyal:我改變了我的例子。問題出現了,試圖在varchar字段中查找整數並忽略這樣的小數:'select * from tab where cast(cast(myColumn as decimal(5,2))as int)= cast(myColumn as decimal( 5,2))' – 2012-04-27 09:09:55
爲了達到這個目的,你可能會發現使用[正則表達式]來測試列更容易(http://dev.mysql.com/doc/refman/5.1/en/regexp.html) 。看到[這個問題](http://stackoverflow.com/questions/75704/how-do-i-check-to-see-if-a-value-is-an-integer-in-mysql)瞭解更多信息。 – eggyal 2012-04-27 09:10:51