sql-server – T-SQL IsNumeric()和Linq-to-SQL

前端之家收集整理的这篇文章主要介绍了sql-server – T-SQL IsNumeric()和Linq-to-SQL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要从数据库中找到满足特定格式约定的最高值.具体来说,我想找到最高的价值

EU999999 (‘9’ being any digit)

select max(col)将返回类似’EUZ …’的内容,例如我想要排除的内容.
以下查询可以解决问题,但我无法通过Linq-to-sql生成此问题.似乎没有sql Server中的isnumeric()函数的转换.

select max(col) from table where col like 'EU%' 
    and 1=isnumeric(replace(col,'EU',''))

编写数据库函数,存储过程或其他任何性质的东西都是我首选解决方案的列表,因为这个表是我的应用程序的核心,我不能轻易地用其他东西替换表对象.

什么是下一个最佳解决方案?

解决方法

虽然缺少ISNUMERIC,但您总是可以尝试几乎等效的NOT LIKE’%[^ 0-9]%,即字符串中没有非数字,或者字符串为空或仅由数字组成:
from x in table 
where sqlMethods.Like(x.col,'EU[0-9]%') // starts with EU and at least one digit
  && !sqlMethods.Like(x.col,'__%[^0-9]%') // and no non-digits
select x;

当然,如果你知道数字的位数是固定的,这可以简化为

from x in table 
where sqlMethods.Like(x.col,'EU[0-9][0-9][0-9][0-9][0-9][0-9]')
select x;
原文链接:https://www.f2er.com/mssql/78040.html

猜你在找的MsSQL相关文章