Sqlite匹配通配符之前的特定字符

时间:2018-02-13 07:59:59

标签: sql sqlite sql-like

在从MS Access转换到Sqlite时,我遇到了一个小问题 以下[,. ]%在MS Access中可以很好地匹配单词之后的字符逗号,句点和空格,但不能在Sqlite中匹配。

例如,对于字典短语“aaa, bbb ccc”和“aaa, bbbbbb ccc”,如果用户键入“aaa bbb”,则变为“aaa[,. ]%bbb”,然后进入一个SELECT * FROM mytable WHERE text LIKE ?。这在Sqlite中不起作用,但它在MS Access中起作用。此外,我希望它只选择第一个字典短语,而不是第二个。

所以,我的问题是我如何匹配Sqlite中的一组字符?

编辑:我无法使用正则表达式,所以我想要一个没有正则表达式的解决方案

2 个答案:

答案 0 :(得分:1)

AFAIK,你不能,你需要使用REGEXP

我能想到的最好的事情就是这样:

select *
from t
where replace(replace(txt, ',', ''), '.', '') like 'aaa bbb%';

这不会涵盖aaa,bbbbaaa bbbb

答案 1 :(得分:1)

在标准SQL中,LIKE没有字符类。

在SQLite中,您可以改为使用GLOB

... WHERE text GLOB 'aaa[,. ]*bbb'

(GLOB区分大小写。)