我執行這個TSQL代碼:CAST始終返回1
DECLARE @myString varchar;
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))
但我一直得到1.00000作爲變化的myString到「123」的結果 不會改變這一點。
任何意見我做錯了讚賞。
在此先感謝!
我執行這個TSQL代碼:CAST始終返回1
DECLARE @myString varchar;
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))
但我一直得到1.00000作爲變化的myString到「123」的結果 不會改變這一點。
任何意見我做錯了讚賞。
在此先感謝!
總是在MySQL中使用varchar()
(及相關類型)時使用長度。在此上下文中默認爲1
。因此,這解決您的問題:
DECLARE @myString varchar(255);
SET @myString = '123.0';
SELECT CAST(@myString as decimal(25,10));
你得到1
,因爲你的代碼被解釋爲
DECLARE @myString varchar(1);
SET @myString = '123.0';
SELECT CAST(@myString as decimal(25,10));
的documentation不避諱這一點:
如果沒有指定n在數據定義或變量聲明 聲明中,缺省長度爲1.當使用 時未指定n時,CAST和CONVER牛逼的功能,默認長度爲30
你缺少的VARCHAR declareation
DECLARE @myString varchar(10);
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))