正規表現のリストがあり、任意の正規表現を渡すフィールドでそれらの行を返したいと思います。とにかく次のようなものはありますか?
SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");
EJBQLでは正規表現がまったく可能ではないように見えるので、ネイティブ(MySQL)クエリを使用する必要があると思います。
正規表現を1つにまとめてみませんか?
"(?:" + regex1 + ")|(?:" + regex2 + ")"
だから、もしregex1 = "^.*foo(.*)bar"
そしてregex2 = "baz(.*)frob$"
、あなたは得るだろう
(?:^.*foo(.*)bar)|(?:baz(.*)frob$)
いいえ、これは不可能です。少なくともあなたが思っている方法ではありません。
代わりにこれを行ってください:正規表現を行としてテーブルに挿入します。次にクエリ
SELECT
*
FROM
Foo AS f
INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern