小编典典

检查字段是否为数字,然后在一条语句中仅对那些字段执行比较?

sql

这可能很简单,但是我不是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子句中。


阅读 141

收藏
2021-04-07

共1个答案

小编典典

这对你有用吗?

select * from purchaseorders
where (case when IsNumeric(purchase_order_number) = 1
       then cast(purchase_order_number as int)
       else 0 end) >= 7
2021-04-07