gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:12:25 26 4
gpt4 key购买 nike

我需要从数据库中找到满足特定格式约定的最高值。具体来说,我想找到看起来像的最高值

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;

关于sql-server - T-SQL IsNumeric() 和 Linq-to-SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com