Sql CAST总是返回1
我正在执行以下TSQL代码:Sql CAST总是返回1,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在执行以下TSQL代码: DECLARE @myString varchar; SET @myString = '123.0' SELECT CAST(@myString as decimal(25,10)) 但结果我得到了10万 将myString更改为“123”并不能改变这一点 任何关于我做错了什么的建议都将不胜感激 提前谢谢 在MySQL中使用varchar()(和相关类型)时始终使用长度。在此上下文中,默认值为1。因此,这解决了您的问题: DECLARE @myString var
DECLARE @myString varchar;
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))
但结果我得到了10万
将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));
政府对此并不害羞:
在数据定义或变量声明中未指定n时
语句,默认长度为1。当使用时未指定n时
在CAST和CONVERT函数中,默认长度为30
在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));
政府对此并不害羞:
在数据定义或变量声明中未指定n时
语句,默认长度为1。当使用时未指定n时
在CAST和CONVERT函数中,默认长度为30
你错过了varchar的声明
DECLARE @myString varchar(10);
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))
你错过了varchar的声明
DECLARE @myString varchar(10);
SET @myString = '123.0'
SELECT CAST(@myString as decimal(25,10))