gpt4 book ai didi

java - 如何在 EJB 命名查询中使用正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:12 30 4
gpt4 key购买 nike

我在 mysql 中有查询,例如

从 TBLM_CUSTOMER 中选择 COUNT(DISTINCT MOBILE),其中 MOBILE NOT REGEXP '^00*0$' AND LENGTH(MOBILE) >= 10;

我正在使用 EJB 3.0,我想使用 NamedQuery 进行相同的查询,使用 createQuery 也可以进行相同的操作,但我想使用 NamedQuery。

是否可以在 EJB 3.0 中使用 NamedQuery 来使用正则表达式?

最佳答案

首先,REGEXP 不是 JPA 定义的标准 JPQL 函数,而是特定于平台的 SQL。如果它与您当前的 JPA 提供程序配合使用(其中一些可能将 WHERE 子句中特定于平台的 SQL 直接传递到数据库,其中一些可能支持扩展给定的方言),则无法保证可移植性(如果这很重要)。

话虽如此,如果您使用createQuery(String)使其工作,那么它没有理由不能与NamedQuery一起工作。你有没有尝试过这样的事情:

SELECT COUNT(DISTINCT MOBILE) FROM TBLM_CUSTOMER WHERE MOBILE NOT REGEXP :regexp AND LENGTH(MOBILE) >= :length;

PS:也许这只是一个示例,但为什么不使用 [NOT] LIKE 来保持查询的可移植性?

关于java - 如何在 EJB 命名查询中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057539/

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