我正在尝试为我的应用程序创建正则表达式过滤器。我正在使用HSQLDB存储消息和regex。模式[1]类以匹配传入消息。我注意到了regex。HSQLDB中的模式等使用不同的匹配“技术”。
我想匹配: {"auth_user":"YQ==","auth_pass":"ZGFz"} 。
{"auth_user":"YQ==","auth_pass":"ZGFz"}
使用HSQLDB: SELECT * FROM messages LIKE %auth%
SELECT * FROM messages LIKE %auth%
使用regex。图案: \bauth 或 auth
\bauth
auth
在HSQLDB中是否有任何方法可以从用户那里获取输入并使用RLIKE或REGEX进行查询?
是否有任何简单的方法可以转换正则表达式。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.*');
REGEXP_MATCHES
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.*');
使用 REGEXP_MATCHES(column_name, regular_expression)
REGEXP_MATCHES(column_name, regular_expression)
该函数使用Java正则表达式语法。
如果列类型为CLOB,请使用对VARCHAR的转换
REGEXP_MATCHES(CAST (column_name AS LONGVARCHAR), regular_expression)