MySQL中首字母集合通配符查询失效,返回空表求助
解决LIKE查询返回空表的问题
问题根源:
[svg]这种字符组通配符并非所有SQL数据库都默认支持。比如MySQL默认的LIKE语法会把[]当作普通字符,试图匹配以[svg]开头的字符串,而非以s、v、g任意一个字符开头的字符串,所以会返回空表。分数据库的解决办法:
- MySQL/MariaDB:
- 使用
REGEXP替代LIKE,语法更直接:select ename from new_schema.employee where ename REGEXP '^[svg]'; - 若要兼容低版本,也可以用多个OR条件:
select ename from new_schema.employee where ename like 's%' or ename like 'v%' or ename like 'g%';
- 使用
- PostgreSQL:
- 使用
SIMILAR TO匹配正则风格的模式:select ename from new_schema.employee where ename SIMILAR TO '[svg]%'; - 或者用
~操作符实现正则匹配:select ename from new_schema.employee where ename ~ '^[svg]';
- 使用
- SQL Server:
- 默认支持
LIKE里的[]字符组,但要注意大小写匹配问题。如果数据里的名称是大写开头,需把条件改成[SVG]%:select ename from new_schema.employee where ename like '[SVG]%'; - 也可以设置不区分大小写的排序规则来避免大小写问题。
- 默认支持
- MySQL/MariaDB:
内容的提问来源于stack exchange,提问作者Venkata VenuGopal Yerra
相关产品推荐
相关产品推荐

