【问题标题】:~ operator in SQLITE~ SQLITE 中的运算符
【发布时间】:2021-04-15 11:46:40
【问题描述】:

我正在 Postgres 上运行这部分查询并且运行良好

where column ~ '^[0-9]'

但是当我尝试在 SQLite 中运行它时,我得到了这个错误:

“~”附近:语法错误

你知道如何在 SQLite 中运行这个函数吗?

【问题讨论】:

    标签: sql sqlite geopackage


    【解决方案1】:

    实际上,如果你想要以数字开头的列,你可以简单地使用:

    where substr(column, 1, 1) between '0' and '9'
    

    SQLite 没有对正则表达式的原生支持——尽管它很容易扩展。它确实支持 Unix 通配符,但在这种情况下,您可以使用内置函数。

    【讨论】:

    • 成功了。你能解释一下为什么在 substr 函数上添加 (...1,1) 吗?谢谢!
    • @J.Patordi 。 . .因为substr(column) 将返回错误“函数 substr() 的参数数量错误”。这些参数返回字符串中的第一个字符。
    【解决方案2】:

    SQLite 支持GLOB 运算符:

    WHERE column GLOB '[0-9]*'
    

    [0-9] 表示该值以数字开头,* 表示可以跟随任何字符。

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多