我执行这个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))