代码之家  ›  专栏  ›  技术社区  ›  Manos Kirtas

Java中HSQLDB的常规表达式查询

  •  5
  • Manos Kirtas  · 技术社区  · 7 年前

    我正在尝试为我的应用程序创建正则表达式过滤器。我正在使用HSQLDB存储消息和regex。模式[1]类以匹配传入消息。我注意到了regex。HSQLDB中的模式等使用不同的匹配“技术”。

    实例

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

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

    使用regex。图案: \bauth auth

    我的问题

    1. 在HSQLDB中是否有任何方法可以从用户那里获取输入并使用RLIKE或REGEX进行查询?

    2. 是否有任何简单的方法可以转换正则表达式。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 回复  |  直到 7 年前
        1
  •  1
  •   fredt    6 年前

    使用 REGEXP_MATCHES(column_name, regular_expression)

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

    如果列类型为CLOB,请使用对VARCHAR的转换

    REGEXP_MATCHES(CAST (column_name AS LONGVARCHAR), regular_expression)

    推荐文章