SQLite如何用单条GLOB语句筛选仅含指定字符的单词?
实现方法
要筛选仅由A、P、Z组成且同时包含这三个字符的单词,用GLOB的写法如下:
SELECT Word FROM your_table WHERE Word NOT GLOB '*[^APZ]*' AND Word GLOB '*A*' AND Word GLOB '*P*' AND Word GLOB '*Z*';
各部分解释
NOT GLOB '*[^APZ]*':排除所有包含A、P、Z以外字符的单词。[^APZ]是GLOB的否定字符类,匹配任何不在A/P/Z中的字符,前面的*表示该字符可以出现在单词的任意位置。Word GLOB '*A*'/*P*/*Z*:分别确保单词中存在A、P、Z三个字符,不受顺序限制。
注意事项
- GLOB在SQLite中默认是大小写敏感的,如果你的单词存在小写字母(如a、p、z),需要先转换为统一大小写再匹配,例如:
WHERE UPPER(Word) NOT GLOB '*[^APZ]*' AND UPPER(Word) GLOB '*A*' AND UPPER(Word) GLOB '*P*' AND UPPER(Word) GLOB '*Z*'; - 单纯的单个GLOB模式无法同时满足“仅含指定字符”和“同时包含所有指定字符”两个条件,因为GLOB不支持正则表达式的正向/反向断言,必须通过多个GLOB条件组合实现。
内容的提问来源于stack exchange,提问作者ColinE66
相关产品推荐
相关产品推荐

