CAST始终返回1

Aff*_*uie 1 sql t-sql sql-server

我正在执行此TSQL代码:

DECLARE @myString varchar;
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))
Run Code Online (Sandbox Code Playgroud)

但是我一直得到1.00000因为将myString更改为'123'并没有改变它.

任何关于我做错的建议都表示赞赏.

提前致谢!

Gor*_*off 7

varchar()在MySQL中使用(和相关类型)时总是使用长度.默认值是1在此上下文中.所以这解决了你的问题:

DECLARE @myString varchar(255);
SET @myString = '123.0';
SELECT CAST(@myString as decimal(25,10));
Run Code Online (Sandbox Code Playgroud)

你得到了1,因为你的代码被解释为

DECLARE @myString varchar(1);
SET @myString = '123.0';
SELECT CAST(@myString as decimal(25,10));
Run Code Online (Sandbox Code Playgroud)

文档是不避讳这一点:

如果未在数据定义或变量声明语句中指定n,则默认长度为1.如果在使用CAST和CONVERT函数时未指定n,则默认长度为30.