Запросы регулярных выражений с HSQLDB в Java
Я пытаюсь создать фильтр регулярных выражений для моего приложения. Я использую HSQLDB для хранения своих сообщений и класс regex.pattern[1], чтобы соответствовать входящим сообщениям. Я заметил, что regex.pattern и LIKE в HSQLDB используют разные совпадения "teqniques".
пример
Я хочу соответствовать: {"auth_user":"YQ==","auth_pass":"ZGFz"}
,
С HSQLDB: SELECT * FROM messages LIKE %auth%
С помощью regex.pattern: \bauth
или же auth
Мои вопросы
Есть ли способ получить входные данные от пользователя и запросить с помощью RLIKE или REGEX в HSQLDB?
Есть ли простой способ конвертировать regex.pattern в запросе HSQLDB?
[1] https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
Заранее спасибо.
РЕДАКТИРОВАТЬ 1: Я получаю сообщения не только в формате JSON.
РЕДАКТИРОВАТЬ 2: я пытался REGEXP_MATCHES
как @JorgeCampos и @fredt упоминают мне, но я получаю следующее исключениеSQL Error [S1000]: java.lang.ClassCastException: org.hsqldb.types.ClobDataID cannot be cast to java.lang.String
когда я выполню следующую командуSELECT * FROM WEBSOCKET_MESSAGE WHERE REGEXP_MATCHES(PAYLOAD_UTF8, '^a.*');
1 ответ
Использование REGEXP_MATCHES(column_name, regular_expression)
Функция использует синтаксис регулярных выражений Java.
Если тип столбца CLOB, используйте приведение к VARCHAR
REGEXP_MATCHES(CAST (column_name AS LONGVARCHAR), regular_expression)