为什么我收到此错误的任何想法:
Error converting data type nvarchar to float
使用此查询?
SELECT *,STUFF(PartNumber,1,3,'')
FROM products.products
ORDER BY CAST(STUFF(PartNumber,1,3,'')AS Float)
由于
答案 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)
获取有效的查询结果,但会删除所有非数字部分编号。