Regex HQL函数用于提取字段仅包含数字的行

Regex HQL函数用于提取字段仅包含数字的行,regex,hibernate,hql,isnumeric,Regex,Hibernate,Hql,Isnumeric,我有一个小问题要揭露: 我想从一个实体中提取,假设它的名称为“CustomerDetail”,所有特定字段(代码)只有数字字符的行 HQL中不存在像Sql Server那样的ISNUMERIC()函数,也不存在应用regex函数的可能性 一种可能的解决方案如下: SELECT C FROM CustomerDetail C WHERE C.code NOT LIKE '%A%' AND C.code NOT LIKE '%B%' 等等,重复这个条件,整体字母和特殊字符 我认为这是一个糟糕的解决

我有一个小问题要揭露:

我想从一个实体中提取,假设它的名称为“CustomerDetail”,所有特定字段(代码)只有数字字符的行

HQL中不存在像Sql Server那样的ISNUMERIC()函数,也不存在应用regex函数的可能性

一种可能的解决方案如下:

SELECT C
FROM CustomerDetail C
WHERE C.code NOT LIKE '%A%'
AND C.code NOT LIKE '%B%'
等等,重复这个条件,整体字母和特殊字符

我认为这是一个糟糕的解决方案,性能水平较低(同类产品数量巨大)

请问,你能给我一个更聪明的解决方案吗

先谢谢你

另外,我的应用程序是多DBMS,因此我不能使用SQL查询

主要编辑: 糟糕的是,我把刚刚工作的函数isNumeric()误认为是HQL函数,这是错误的。 根据HQL支持数据库标量函数,SQLServer(我在其上进行了测试)有一个isNumeric()函数

我现在看到两种选择:

备选案文1: 您可以为不同的数据库编写不同的HQL,这些数据库利用SQLServer上的内置函数,如isNumeric()(但就“一次写入,到处运行”而言,这是一个巨大的倒退)

备选案文2: 为您希望与SQL中的自定义函数兼容的每个数据库编写代码,并用您的方言用相同的名称注册它


我知道,这两个选项都不太好,但我想不出任何其他方法来让它工作。

亲爱的,HQL没有isNumeric(正如我在问题中所写的那样)您尝试过我的解决方案(包括
=1
)吗?因为,就像我在我的回答中写的那样-它是有效的…在我写问题之前。。。我尝试我的代码。这是HQL的第14章:显示允许的函数。