Запросы регулярных выражений с 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

Мои вопросы

  1. Есть ли способ получить входные данные от пользователя и запросить с помощью RLIKE или REGEX в HSQLDB?

  2. Есть ли простой способ конвертировать 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)

Другие вопросы по тегам