我正在使用 glob 运算符和“?” 通配符。问题是 - 它区分大小写。
所以假设我想搜索“Hola”,那么下面的查询不起作用。
select * from tableName where columnName glob 'ho?a';
我可以将 LOWER 或 UPPER 关键字与 columnName 一起使用,但对于小写和大写字母组合的文本也会失败。
请提供您的意见。
GLOB
在设计上区分大小写。
如果您想要不区分大小写的匹配,请使用
LIKE
,其中 _
匹配单个字符:
select * from tableName where columnName like 'ho_a';
GLOB 支持字符类:
SELECT * FROM tableName WHERE columnName GLOB '[hH][oO]?[aA]';
但是,使用 LIKE 会更容易,除非您实际上需要在模式的其他部分使用字符类。
我不知道为什么这个问题没有建议以下内容:
select * from tableName where LOWER(columnName) glob LOWER('ho?a');
...在这种情况下不需要第二个 LOWER() ,我在其中添加了以防万一有人偶然发现这个并且忘记确保它也被降低了
另请注意,添加到初始问题的注释并不适用 - GLOB 不支持排序规则指令,至少目前不支持......