2012-07-10 46 views
0

我当前的查询看起来是这样的:@NamedQuery - MySQL的 - 像

SELECT * FROM piece p WHERE p.code LIKE '%1740%' OR p.code LIKE '%1938%' 

我做了一些环顾四周,找不到类似于像()什么:

SELECT * FROM piece p WHERE p.code LIKE IN('%1740 %', '%1938 %') 

在MySQL中,我可以这样做:

SELECT * FROM piece p WHERE code REGEXP '1740|1938' 

但是我不能在@NamedQuery中使用它。

KO : select p from piece p where p.code REGEXP :code 
incomplete : select p from piece p where p.code in :code 

有人帮我吗?

+0

有什么不对您的当前查询? – 2012-07-10 15:08:48

+0

您可以尝试'SELECT * FROM piece p WHERE code REGEXP'1740 $ |^1938';' 将^放在值的前面表示行的开始。在值后面放置$表示行结束。放置(。*)的行为与%通配符非常相似。这个。表示除换行符外的任何单个字符。放置。带*(。*)的inside()会添加一个重复模式,指示任意数量的字符,直到行尾。 – roymustang86 2012-07-10 15:27:20

+0

我无法在@namedquery中使用关键字REGEXP。 – Virginie 2012-07-11 06:58:59

回答