转换数据类型时出错

时间:2014-01-27 18:32:38

标签: sql tsql sql-server-2012

为什么我收到此错误的任何想法:

Error converting data type nvarchar to float

使用此查询?

SELECT *,STUFF(PartNumber,1,3,'')
FROM products.products
ORDER BY CAST(STUFF(PartNumber,1,3,'')AS Float)

由于

2 个答案:

答案 0 :(得分:1)

就在这里:

STUFF(PartNumber,1,3,'')

在使用CAST()之前,如果PartNumber是浮点数,则会因为尝试插入空字符串(nvarchar)而得到错误。

如果STUFF()没有导致错误(即,partnumber不是浮点数),那么结果包含一个nvarchar,它会被你的转换捕获:

CAST(...).

考虑到你告诉STUFF()函数将一个nvarchar(空字符串'')放入partNumber中......这可能是你最好的线索......

答案 1 :(得分:0)

部件号是否包含任何字符数据(如空格,输入标签或非数字值?),如果是这样,那就是原因。

select * from products.products where not isnumeric(stuff(partNumber,1,3,'')

识别可能有问题的值。

select *, stuff(PartNumber,1,3,'') 
from products.products 
where  isnumeric(stuff(partNumber,1,3,'') 
order by cast(Stuff(partNumber,1,3,'')As Float)

获取有效的查询结果,但会删除所有非数字部分编号。