在sqlite3的WHERE子句中使用用户定义的函数

时间:2019-06-17 18:51:18

标签: python-3.x sqlite

我正在使用Python 3中的sqlite3库,以根据是否与正则表达式匹配来对列进行过滤。

我在这里发现了一个似乎完全可以解决这个问题的问题:Problem with regexp python and sqlite

顶部答案中的函数带有参数a = [-3, -2, -1, 1, 2, 3] b = 3*a ,其中expr, item是参数化值,而expr是在列item上迭代得到的单元格。我找不到任何建议将WHERE子句中单元格的值传递到自定义函数的最后一个参数的文档-似乎应该为bar

在任何地方都有明确记录此交互的信息吗?

1 个答案:

答案 0 :(得分:1)

在sqlite中使用x REGEXP y时,如果存在具有该名称的函数,则转换为regexp(y, x),否则返回错误。 ({LIKEGLOB的处理方式相同,只是sqlite提供了这些内容,而不是依赖扩展模块或用户定义的函数。)

来自the documentation

  

REGEXP运算符是regexp()用户函数的特殊语法。默认情况下,没有定义regexp()用户函数,因此使用REGEXP运算符通常会导致错误消息。如果在运行时添加了应用程序定义的名为“ regexp”的SQL函数,则将实现“ X REGEXP Y”运算符作为对“ regexp(Y,X)”的调用。