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

Joe*_*ras 5 regex hibernate hql isnumeric

我有一个小问题要揭露:

我想从实体中提取,假设其名称为"CustomerDetail",其中特定字段(代码)只有数字字符的所有行.

在HQL中不存在ISNUMERIC()函数,如Sql Server,以及应用regex函数的可能性.

可能的解决方案如下:

SELECT C
FROM CustomerDetail C
WHERE C.code NOT LIKE '%A%'
AND C.code NOT LIKE '%B%'
Run Code Online (Sandbox Code Playgroud)

等重复这个条件整体alfabetical字母和特殊字符.

我认为这是一个糟糕的解决方案,性能低下(大量的LIKE)

拜托,您能告诉我一个更聪明的解决方案吗?

先感谢您

PS我的应用程序是多DBMS所以我不能使用SQL查询

Mar*_* K. 1

主要编辑:我的错,我把刚刚工作的函数 isNumeric() 误认为是 HQL 函数,这是错误的。根据文档, HQL 支持数据库标量函数 - 并且 SQLServer(我在其上测试过)有一个 isNumeric() 函数。

我现在看到两个选择:

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

选项 2:为每个您想要兼容的数据库编写 SQL 中的自定义函数,并使用您的方言中的相同名称进行注册。

我知道,这两种选择都不是很好,但我想不出任何其他方法可以让它发挥作用。