任何想法,为什么我得到这个错误:错误转换数据类型
Error converting data type nvarchar to float
使用此查询?
SELECT *,STUFF(PartNumber,1,3,'')
FROM products.products
ORDER BY CAST(STUFF(PartNumber,1,3,'')AS Float)
感谢
任何想法,为什么我得到这个错误:错误转换数据类型
Error converting data type nvarchar to float
使用此查询?
SELECT *,STUFF(PartNumber,1,3,'')
FROM products.products
ORDER BY CAST(STUFF(PartNumber,1,3,'')AS Float)
感谢
是否零件号有任何字符数据(如空格,输入的标签,或者非数字值?)如果是这样,这就是为什么。
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)
得到一个有效的查询结果,但它会删除所有的非数字零件号码。
它确实有空格等现在我在关键字'order '。使用你建议的查询 – user3241586
错过了a)where子句 – xQbert
就在这里:
STUFF(PartNumber,1,3,'')
之前,你甚至可以使用CAST(),你会得到错误由于您试图插入空字符串 - 这是一个nvarchar - 如果部分号码是浮动。
如果STUFF()
不会导致错误(即,部分号码是不是float),那么结果包含一个过得去转换抓住一个nvarchar:
CAST(...).
考虑到你告诉STUFF ()函数将nvarchar(空字符串'')放入partNumber中......这可能是您最好的线索......
partnumber中是否有任何字符数据(如空格,输入的选项卡或非数字值?)如果是这样,那就是原因。运行'select * from products.products where isnumeric(stuff(partNumber,1,3,'')'来识别潜在的违规值。 – xQbert