我试图从varchar列中检索包含数字和字符串的最大数字.我正在使用的数据示例:
BoxNumber
123
A5
789
B1
我需要从列中返回最大数字(在这种情况下为789),同时忽略A5和B1的非数字值.
我找到了使用自定义函数来解决问题的解决方案,但我需要一些可以执行即席查询而不依赖于自定义函数或过程的东西.
你需要一个组合,因为isnumeric为以下事情返回1
select isnumeric('+'),isnumeric('5d2')
你的where子句就像这样
WHERE VALUE NOT LIKE '%[a-z]%' AND ISNUMERIC(VALUE) = 1 create table #bla (value varchar(50)) insert #bla values('123') insert #bla values('a5') insert #bla values('789') insert #bla values('b1') SELECT MAX(CAST(value AS Int)) FROM #bla WHERE VALUE NOT LIKE '%[a-z]%' AND ISNUMERIC(VALUE) = 1
我在这里写了关于这个ISNUMERIC麻烦
你可以试试
Select MAX(BoxNumber) from {table} where IsNumeric(BoxNumber) = 1