我不能让不区分大小写的搜索在SQLITE中用于REGEX。是否支持语法?
SELECT * FROM table WHERE name REGEXP 'smith[s]*\i'
我希望得到以下答案(假设数据库有这些条目):
史密斯
史密斯
史密斯
smitH< ---不是拼写错误,但在数据库中
注意 - 这只是较大REGEX的一小部分,因此我不会使用LIKE
答案 0 :(得分:1)
SQLite Manager附带的REGEXP
函数在JavaScript中实现如下:
var regExp = new RegExp(aValues.getString(0));
var strVal = new String(aValues.getString(1));
if (strVal.match(regExp)) return 1;
else return 0;
要使用JavaScript RegExp object进行不区分大小写的搜索,您不会在模式字符串本身中添加标记,而是将第二个参数中的i
标记传递给RegExp
构造函数。但是,二进制REGEXP
运算符没有第三个flags参数,并且代码不会尝试从模式中提取标志,因此在此实现中不支持这些标志。
答案 1 :(得分:0)
如CL所述,SQLite不支持此功能。一个简单的解决方案是使用小写“小写” REGEXP表达式的左侧:
<p>
这不是个主意,但可以。但是要注意变音符号。如果您的文字使用它们,我会阅读下面的文档。
答案 2 :(得分:0)
来自https://www.sqlite.org/lang_expr.html
如果在运行时添加了应用程序定义的名为“ regexp”的SQL函数,则将实现“ X REGEXP Y”运算符作为对“ regexp(Y,X)”的调用。