例如在正则表达式中,我们可以使用{n,m}来指定我们要与前一个元素至少匹配n次,但不超过m次。
在SQL(特别是sqlite)中是否可以通过将通配符'_匹配最多5次但没有更多的方式来做到这一点?
例如我想在字母j和z之间最多5个字符
所以我会得到Jaz或Jaaaaaz,但不会得到Jaaaaaaz
谢谢!
答案 0 :(得分:2)
您可以将regexp模块添加到SQLite中。那可能是解决您问题的最佳方法。
您可以按照自己的意愿做:
where col not like '______' -- 6 underscores
或更简单地说:
when length(col) < 6
那是您问题的直接答案。
编辑:
最多可以输入五个字符:
where col like 'j%z' and
col not like 'j______z'
或者使用更野蛮的力量:
where col like 'jz' or
col like 'j_z' or
col like 'j__z' or
col like 'j___z' or
col like 'j____z' or
col like 'j_____z'
如果要在字符串(而不是整个字符串)中使用这些模式,请在模式的开头和结尾添加%
。
答案 1 :(得分:1)
要回答您的特定问题,您可以使用
WHERE col LIKE 'J%z' AND LENGTH(col) < 8
例如
SELECT 'Jaaaz' LIKE 'J%z' AND LENGTH('Jaaaz') < 8, 'Jaaaaaaz' LIKE 'J%z' AND LENGTH('Jaaaaaaz') < 8
输出
1 0