加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:44:58 所属栏目:MsSql教程 来源:网络整理
导读:我需要从数据库中找到满足特定格式约定的最高值.具体来说,我想找到最高的价值 EU999999 (‘9’ being any digit) select max(col)将返回类似’EUZ …’的内容,例如我想要排除的内容. 以下查询可以解决问题,但我无法通过Linq-to-SQL生成此问题.似乎没有SQL Ser
我需要从数据库中找到满足特定格式约定的最高值.具体来说,我想找到最高的价值

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读