REGEX Sqlite不区分大小写不起作用

时间:2013-01-31 00:07:35

标签: regex sqlite case-insensitive

我不能让不区分大小写的搜索在SQLITE中用于REGEX。是否支持语法?

SELECT * FROM table WHERE name REGEXP 'smith[s]*\i'

我希望得到以下答案(假设数据库有这些条目):

史密斯
史密斯
史密斯
smitH< ---不是拼写错误,但在数据库中

注意 - 这只是较大REGEX的一小部分,因此我不会使用LIKE

3 个答案:

答案 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)”的调用。