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

时间:2013-10-10 09:36:28

标签: regex hibernate hql isnumeric

我有一个小问题需要揭露:

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

在HQL中,不存在ISNUMERIC()函数,如Sql Server,以及应用正则表达式函数的可能性。

可能的解决方案如下:

SELECT C
FROM CustomerDetail C
WHERE C.code NOT LIKE '%A%'
AND C.code NOT LIKE '%B%'

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

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

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

提前谢谢

P.S。我的应用程序是多DBMS,因此我无法使用SQL查询

1 个答案:

答案 0 :(得分:1)

主要编辑: 我的坏,我误认为正常工作函数isNumeric()用于错误的HQL函数。 根据{{​​3}} HQL支持数据库标量函数 - 和SQLServer(我测试过)有一个isNumeric()函数。

我现在看到两个选项:

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

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

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

相关问题