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
我需要从数据库中找到满足特定格式约定的最高值.具体来说,我想找到最高的价值
select max(col)将返回类似’EUZ …’的内容,例如我想要排除的内容. 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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |