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

Sqlite match specific characters before wildcard

在从 MS Access 过渡到 Sqlite 的过程中,我遇到了一个小问题 以下 [,. ]% 在 MS Access 中可以很好地匹配单词后的字符逗号、句点和 space,但在 Sqlite 中则不行。

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

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

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

据我所知,你不能,你需要使用 REGEXP

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

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

这不会涵盖 aaa,bbbbaaa bbbb

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

在 SQLite 中,您可以使用 GLOB 代替:

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

(GLOB 区分大小写。)