SQLite3括号通配符失效:如何匹配大小写的Cheesecake
SQLite3中查询包含大小写"Cheesecake"的行的解决方案
你原来的SQL语句没法生效,是因为SQLite的LIKE操作符不支持[Cc]这种正则风格的字符类语法,换以下几种写法就能实现需求:
方案一:直接用两个
LIKE条件通过OR连接
这种写法简单直观,不需要额外函数,适合基础场景:SELECT * FROM food WHERE name LIKE "%Cheesecake%" OR name LIKE "%cheesecake%";方案二:用
LOWER()统一转换为小写后匹配
把字段值转成小写,再和小写的关键词匹配,一次就能覆盖大小写情况:SELECT * FROM food WHERE LOWER(name) LIKE "%cheesecake%";换成
UPPER(name) LIKE "%CHEESECAKE%"也能达到同样效果。方案三:用正则表达式(需SQLite 3.31.0及以上版本,且编译时启用ICU扩展)
如果你需要更复杂的匹配规则,可以用REGEXP,搭配不区分大小写的排序规则:-- 先加载ICU扩展(仅需执行一次) .load icu SELECT * FROM food WHERE name REGEXP "cheesecake" COLLATE NOCASE;或者直接在正则里指定大小写范围:
SELECT * FROM food WHERE name REGEXP "[Cc]heesecake";
内容的提问来源于stack exchange,提问作者CheesecakeLover
相关产品推荐
相关产品推荐

