首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQLite查询中使用正则表达式?

如何在SQLite查询中使用正则表达式?
EN

Stack Overflow用户
提问于 2011-02-22 05:43:16
回答 15查看 157.2K关注 0票数 121

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

我的表中有一列包含这样的字符串:"3,12, 13 ,14,19,28, 32“现在,如果我输入"where x like '3'”,我也会得到包含13或32这样的值的行,但我只想得到字符串中恰好包含值3的行。

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

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2011-02-22 05:51:19

SQLite3支持REGEXP运算符:

代码语言:javascript
复制
WHERE x REGEXP <regex>

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

票数 87
EN

Stack Overflow用户

发布于 2011-12-01 16:41:09

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

代码语言:javascript
复制
sudo apt-get install sqlite3-pcre

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

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

代码语言:javascript
复制
.load /usr/lib/sqlite3/pcre.so

或者你可以把这一行放到你的~/.sqliterc里。

现在您可以像这样查询:

代码语言:javascript
复制
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';

如果想要直接从命令行查询,可以使用-cmd开关在执行以下操作之前装载库:

代码语言:javascript
复制
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"

如果你使用的是Windows,我想应该有一个类似的.dll文件。

票数 130
EN

Stack Overflow用户

发布于 2011-02-22 05:56:42

在不使用正则表达式的情况下,一种简单的解决方法是where ',' || x || ',' like '%,3,%'

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5071601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档