为了账号安全,请及时绑定邮箱和手机立即绑定

如何在SQLite查询中使用regex?

/ 猿问

如何在SQLite查询中使用regex?

慕虎7371278 2019-07-02 10:38:14

如何在SQLite查询中使用regex?

我想在sqite中使用正则表达式,但我不知道如何使用。

我的表中有一个字符串列:“3,12,13,14,19,28,32”,如果我键入“WHERE x类似于‘3’”,我也会得到包含13或32之类值的行,但是我只想得到该字符串中的值为3的行。

有人知道怎么解决这个问题吗?


查看完整描述

3 回答

?
慕仙森

sqlite 3支持REGEXP运算符:

WHERE x REGEXP <regex>

http://www.sqlite.org/lang_expr.html#regexp


查看完整回答
反对 回复 2019-07-02
?
万千封印

正如其他人已经指出的,REGEXP调用用户定义的函数,该函数必须首先定义并加载到数据库中。也许有些sqite发行版或GUI工具默认包括它,但我的Ubuntu安装没有。解决办法是

sudo apt-get install sqlite3-pcre

中的可加载模块中实现perl正则表达式。/usr/lib/sqlite3/pcre.so

为了能够使用它,您必须在每次打开数据库时加载它:

.load /usr/lib/sqlite3/pcre.so

或者你可以把这条线放进你的~/.sqliterc.

现在您可以这样查询:

SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';

如果要直接从命令行查询,可以使用-cmd切换到在SQL之前加载库:

sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"

如果您在Windows上,我想应该有一个类似的.dll文件。


查看完整回答
反对 回复 2019-07-02

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信