这可能很简单,但是我不是SQL天才,所以我迷路了。我了解sql会接受您的查询并以一定顺序执行它,因此我相信这是为什么该查询不起作用的原因:
select * from purchaseorders where IsNumeric(purchase_order_number) = 1 and cast(purchase_order_number as int) >= 7
purchar_order_number字段的大部分是数字,但是最近我们引入了字母数字的。我试图获取的数据是查看“ 7”是否大于最高数字purchase_order_number。
Numeric()函数可以很好地过滤掉字母数字字段,但是进行后续的转换比较会引发此错误:
Conversion failed when converting the nvarchar value '124-4356AB' to data type int.
我不是在问错误意味着什么,这很明显。我在问是否有一种方法可以在单个查询中完成我想要的事情,由于ORM约束,最好在where子句中。
这对你有用吗?
select * from purchaseorders where (case when IsNumeric(purchase_order_number) = 1 then cast(purchase_order_number as int) else 0 end) >= 7