我想在sqlite中使用正则表达式,但我不知道如何使用。
我的表中有一列包含这样的字符串:"3,12, 13 ,14,19,28, 32“现在,如果我输入"where x like '3'”,我也会得到包含13或32这样的值的行,但我只想得到字符串中恰好包含值3的行。
有人知道怎么解决这个问题吗?
发布于 2011-02-22 05:51:19
发布于 2011-12-01 16:41:09
正如其他人已经指出的,REGEXP调用用户定义的函数,该函数必须首先定义并加载到数据库中。也许一些sqlite发行版或GUI工具在默认情况下包含它,但我的Ubuntu安装没有。解决方案是
sudo apt-get install sqlite3-pcre
,它在/usr/lib/sqlite3/pcre.so
的可加载模块中实现Perl正则表达式。
为了能够使用它,您必须在每次打开数据库时加载它:
.load /usr/lib/sqlite3/pcre.so
或者你可以把这一行放到你的~/.sqliterc
里。
现在您可以像这样查询:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
如果想要直接从命令行查询,可以使用-cmd
开关在执行以下操作之前装载库:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
如果你使用的是Windows,我想应该有一个类似的.dll文件。
发布于 2011-02-22 05:56:42
在不使用正则表达式的情况下,一种简单的解决方法是where ',' || x || ',' like '%,3,%'
https://stackoverflow.com/questions/5071601
复制相似问题