EJBQL / MySQL regex e IN
Domanda
Ho un elenco di espressioni regolari e vuole tornare le righe con un campo che passa qualsiasi regex. Esiste un modo per qualcosa di simile a quanto segue:
SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");
Non ha l'aspetto di espressioni regolari sono possibili a tutti nel EJBQL quindi immagino che devo utilizzare una query nativa (MySQL).
Soluzione
Perché non combinare le espressioni regolari in uno?
"(?:" + regex1 + ")|(?:" + regex2 + ")"
Quindi, se regex1 = "^.*foo(.*)bar"
e regex2 = "baz(.*)frob$"
, otterreste
(?:^.*foo(.*)bar)|(?:baz(.*)frob$)
Altri suggerimenti
No, questo non è possibile. Almeno non il modo in cui si pensa che sia.
fare questo, invece: Inserire le regex come righe in una tabella. Poi domanda
SELECT
*
FROM
Foo AS f
INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow