2

正規表現のリストがあり、任意の正規表現を渡すフィールドでそれらの行を返したいと思います。とにかく次のようなものはありますか?

SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");

EJBQLでは正規表現がまったく可能ではないように見えるので、ネイティブ(MySQL)クエリを使用する必要があると思います。

4

2 に答える 2

2

正規表現を1つにまとめてみませんか?

"(?:" + regex1 + ")|(?:" + regex2 + ")"

だから、もしregex1 = "^.*foo(.*)bar"そしてregex2 = "baz(.*)frob$"、あなたは得るだろう

(?:^.*foo(.*)bar)|(?:baz(.*)frob$)
于 2010-12-30T13:33:57.427 に答える
1

いいえ、これは不可能です。少なくともあなたが思っている方法ではありません。

代わりにこれを行ってください:正規表現を行としてテーブルに挿入します。次にクエリ

SELECT 
  * 
FROM
  Foo AS f
  INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern
于 2010-12-30T13:33:05.193 に答える