Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql CAST总是返回1_Sql_Sql Server_Tsql - Fatal编程技术网

Sql CAST总是返回1

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

我正在执行以下TSQL代码:

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))