如何在sqlite中使用正则表达式

8
请问在SQLite中如何使用正则表达式(REGEXP)?
实现:
SELECT field FROM table WHERE field REGEXP '123'

它不工作。错误:没有这样的函数:REGEXP

3个回答

12

目前我正在使用sqlite3+php在Ubuntu 12.04上开发我的Web应用程序。我之前也遇到了同样的问题,后来经过研究发现我们需要安装一个pcre软件包来支持sqlite3。以下是具体步骤:

  1. apt-get install sqlite3-pcre
  2. 进入sqlite3命令行sqlite3 test.db
  3. 运行命令 .load /usr/lib/sqlite3/pcre.so
  4. 测试 : SELECT url FROM table_name where url REGEXP '^google.*';

按照这3个步骤操作后,我的问题得以解决。 如果我有所错误,请指出。 希望这能帮助你。

谢谢。


1
有没有想过如何在Windows上实现这个? - Jon Allen

6
您不能使用它。首先,您需要一个实现它的函数,如文档所述:REGEXP运算符是regexp()用户函数的特殊语法。默认情况下不会定义任何regexp()用户函数,因此使用REGEXP运算符通常会导致错误消息。如果在运行时添加了名为“regexp”的应用程序定义的SQL函数,则“X REGEXP Y”操作符将被实现为对“regexp(Y,X)” 的调用。在Android SQLite中没有安装用户定义函数的方法。请考虑是否可以将正则表达式编写为GLOB或LIKE模式。

2
有一种方法可以使用 NDK 在 Android SQLite 中安装用户定义函数。 - Waqas Ahmed Ansari

0
您可以使用 sqlean-regexp 扩展,该扩展提供了正则表达式搜索和替换功能。
基于 PCRE2 引擎,该扩展支持所有主要的正则表达式特性。它还支持 Unicode。
该扩展适用于 Windows、Linux 和 macOS。您可能可以使用 android-gcc-toolchain 构建它来为 Android 使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接