我有以下查询:
String selectQuery = "SELECT * FROM " + DOCUMENT_TABLE + " WHERE " + DOCUMENT_TYPE + " REGEXP " + "(^|,)(pdf)(,|$)";
在编译时我收到此错误:
android.database.sqlite.SQLiteException:无法识别的令牌:“^”(代码 1):,同时编译:SELECT * FROM DOCUMENTTABLE WHERE TYPE REGEXP(^ |,)(pdf)(,| $)
where子句中的列具有以下格式写入的值:
如何使用正则表达式检索正确的信息(我的情况下,获取所有pdf格式的文档)?
答案 0 :(得分:1)
您必须将正则表达式括在单引号之间:
" REGEXP " + "'(^|,)(pdf)(,|$)'";
# here __^ and __^
你也可以使用:
" REGEXP '\bpdf\b'";
答案 1 :(得分:1)
正则表达式必须是字符串文字,因此用'single quotes'
包围它。这解决了语法问题。
但是,在sqlite中没有REGEXP
实现,并且Android sqlite API实际上不允许您为REGEXP
安装实现。
要解决根本问题,请考虑重新设计您的架构,以便您不会首先在逗号分隔值上存储查询。