Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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/0/jpa/2.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 server ssms无法将varchar转换为数字_Sql Server - Fatal编程技术网

Sql server ssms无法将varchar转换为数字

Sql server ssms无法将varchar转换为数字,sql-server,Sql Server,我试图创建一个存储多个值的表,但出现了一个错误 (显示将数据类型varchar转换为数字) 我希望我能将数据加载到我的表中您试图在佣金Pct和经理ID列中插入十进制(2,2)和数值的值'NULL' 您必须改用NULL,不带引号: insert into Employees (Employee_iD,Frist_Name,Last_Name,Email,Phone_number,Hire_date,Job_ID,Salary,Commission_Pct,Manager_ID,Department

我试图创建一个存储多个值的表,但出现了一个错误 (显示将数据类型varchar转换为数字)


我希望我能将数据加载到我的表中

您试图在
佣金Pct
经理ID
列中插入
十进制(2,2)
数值
的值
'NULL'
您必须改用
NULL
,不带引号:

insert into Employees
(Employee_iD,Frist_Name,Last_Name,Email,Phone_number,Hire_date,Job_ID,Salary,Commission_Pct,Manager_ID,Department_ID)
values
('100','Steven','King','SKING','5151234567','1987-06-17','AD PRES',24000.00,NULL,NULL,'90');
还有其他定义为数字类型的列,您可以为其插入
varchar
值,如
Salary
。不同之处在于,您为
工资插入的
'24000.0'
值可以隐式转换为
十进制(8,2)
,因此没有错误。

但是字符串literal
'NULL'
不能解释为
NULL
您试图在
佣金Pct
经理ID
列中插入值
'NULL'
,这些列定义为
十进制(2,2)
数字

您必须改用
NULL
,不带引号:

insert into Employees
(Employee_iD,Frist_Name,Last_Name,Email,Phone_number,Hire_date,Job_ID,Salary,Commission_Pct,Manager_ID,Department_ID)
values
('100','Steven','King','SKING','5151234567','1987-06-17','AD PRES',24000.00,NULL,NULL,'90');
还有其他定义为数字类型的列,您可以为其插入
varchar
值,如
Salary
。不同之处在于,您为
工资插入的
'24000.0'
值可以隐式转换为
十进制(8,2)
,因此没有错误。

但是字符串文字
'NULL'
不能解释为
NULL

只要从非字符串值中删除撇号'xxx',tinyint,numeric和decimal。

只要从非字符串值中删除撇号'xxx',tinyint,数字和十进制。

此错误的原因是字符串
'NULL'
第一个名称
可能应该是
第一个名称
;数据类型
decimal(2,2)
的意思是:总共2位数字,其中2位在小数点之后(因此小数点之前没有数字)-这真的是您想要的吗???当插入数值和
NULL
时-不能将它们放在单引号中!此错误的原因是字符串
'NULL'
First_name
可能应该是
First_name
;数据类型
decimal(2,2)
的意思是:总共2位数字,其中2位在小数点之后(因此小数点之前没有数字)-这真的是您想要的吗???当插入数值和
NULL
时-不能将它们放在单引号中!我还建议将电话号码存储为nvarchar,以便它可以容纳前导零、空格、破折号和加号(+44 1604 123456)。在使用
nvarchar
而不是
varchar
之前,请务必仔细考虑。我只会在您确实需要使用unicode存储值时使用它,通常情况下并非如此。@Guido,对您的评论是肯定的,只是我们都希望我们的软件能够在我们居住的地区之外增长和使用……在这种情况下,nvarchar是正确的选择……即使它使您的存储需求翻了一番。没有必要。如果您的软件在中国使用,当他们使用自己的数据库时,使用varchar仍然可以正常工作。只有在中国,他们将数据输入一个同样在美国使用的数据库时,才会出错。只有在这种情况下你才需要女律师,这正是我的观点。我想当需要改变时,你会发现存储比重新开发更便宜。我还应该建议将电话号码存储为nvarchar,以便它可以容纳前导零、空格、破折号和加号(+44 1604 123456)。在使用
nvarchar
而不是
varchar
之前,一定要仔细考虑。我只会在您确实需要使用unicode存储值时使用它,通常情况下并非如此。@Guido,对您的评论是肯定的,只是我们都希望我们的软件能够在我们居住的地区之外增长和使用……在这种情况下,nvarchar是正确的选择……即使它使您的存储需求翻了一番。没有必要。如果您的软件在中国使用,当他们使用自己的数据库时,使用varchar仍然可以正常工作。只有在中国,他们将数据输入一个同样在美国使用的数据库时,才会出错。只有在这种情况下你才需要女律师,这正是我的观点。我想当需求发生变化时,你会发现存储比重新开发更便宜。