我连接到具有 SQLite 的嵌入式设备,但它具有默认的正则表达式支持,没有任何额外的支持。 在此默认正则表达式支持中,我想匹配以“B”或“AA”开头的列。
(使用 grep 可以这样:grep -P "^(B|AA)" myfile.txt)
但是在 SQLite 中类似
SELECT col1, col2 FROM Table1 WHERE (col2 REGEXP 'AA' OR col2 REGEXP 'B'); 不起作用。
有人知道为什么吗? 我知道它是默认的正则表达式引擎,但是简单的正则表达式..
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
开头的列。