sqlite 中的正则表达式,无需额外加载库

问题描述 投票:0回答:1

我连接到具有 SQLite 的嵌入式设备,但它具有默认的正则表达式支持,没有任何额外的支持。 在此默认正则表达式支持中,我想匹配以“B”或“AA”开头的列。

(使用 grep 可以这样:grep -P "^(B|AA)" myfile.txt)

但是在 SQLite 中类似

SELECT col1, col2 FROM Table1 WHERE (col2 REGEXP 'AA' OR col2 REGEXP 'B'); 不起作用。

有人知道为什么吗? 我知道它是默认的正则表达式引擎,但是简单的正则表达式..

linux sqlite
1个回答
0
投票

SQLite 的内置

REGEXP
运算符不支持与 grep 的
-P
选项相同的语法。但是,您可以通过稍微不同的方式来实现您的要求:

SELECT col1, col2 FROM Table1 WHERE (col2 REGEXP '^(B|AA)' OR col2 GLOB 'BA*');

在上面的查询中:

  • col2 REGEXP '^(B|AA)'
    - 使用 POSIX 正则表达式匹配以
    B
    AA
    开头的列。
  • col2 GLOB 'BA*'
    - 使用 glob 模式匹配以
    BA
    开头的列。
© www.soinside.com 2019 - 2024. All rights reserved.