使用Java中的HSQLDB进行常规Expresions查询

时间:2018-03-26 13:05:46

标签: java regex database hsqldb rlike

我正在尝试为我的应用创建一个正则表达式过滤器。我使用HSQLDB存储我的消息和regex.pattern [1]类来匹配传入的消息。我注意到HSQLDB中的regex.pattern和LIKE使用了不同的匹配" teqniques"。

实施例

我想匹配:{"auth_user":"YQ==","auth_pass":"ZGFz"}

使用HSQLDB:SELECT * FROM messages LIKE %auth%

使用regex.pattern:\bauthauth

我的问题

  1. 有没有办法从HSQLDB中用RLIKE或REGEX获取用户输入和查询?

  2. 有没有简单的方法在HSQLDB查询中转换regex.pattern?

  3. [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 个答案:

答案 0 :(得分:1)

使用REGEXP_MATCHES(column_name, regular_expression)

该函数使用Java正则表达式语法。

如果列类型为CLOB,则使用强制转换为VARCHAR

REGEXP_MATCHES(CAST (column_name AS LONGVARCHAR), regular_expression)