You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite查询首字符为A-F(不区分大小写)的name无返回值问题

你使用的[A-Fa-f]范围匹配语法不属于标准SQL的LIKE操作符支持的通配符规则,只有少部分数据库(如SQL Server、Access)的方言支持该扩展写法,MySQL、PostgreSQL、SQLite等绝大多数主流数据库会把方括号当作普通字符匹配,也就是会去查找首字符是[的字符串,自然不会返回符合要求的结果。

解决方案

1. 全数据库兼容写法

直接截取首字符后做范围判断,所有SQL数据库都支持该语法:

SELECT name FROM pet WHERE LOWER(SUBSTRING(name, 1, 1)) BETWEEN 'a' AND 'f';

如果你的库表排序规则本身是大小写不敏感的,可以省略LOWER()函数简化写法。

2. 正则匹配写法(支持正则的数据库通用)

绝大多数主流数据库都支持正则匹配操作符,写法更简洁:

-- MySQL、SQLite 写法
SELECT name FROM pet WHERE name REGEXP '^[A-Fa-f]';

-- PostgreSQL 写法
SELECT name FROM pet WHERE name ~ '^[A-Fa-f]';

3. 纯LIKE写法(不推荐,仅做参考)

如果只能用LIKE语法,可以拆分多个匹配条件:

SELECT name FROM pet 
WHERE LOWER(name) LIKE 'a%'
   OR LOWER(name) LIKE 'b%'
   OR LOWER(name) LIKE 'c%'
   OR LOWER(name) LIKE 'd%'
   OR LOWER(name) LIKE 'e%'
   OR LOWER(name) LIKE 'f%';

内容的提问来源于stack exchange,提问作者SLN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:06:05