SQL查询如何返回第三个字符为c且后续不再出现该字符的结果
解决方案
直接在原有查询的WHERE子句后追加排除后续出现c的条件即可,修改后的完整语句如下:
SELECT product_name, model_year, list_price FROM production.products WHERE product_name LIKE '__c%' AND product_name NOT LIKE '__c%c%'
条件说明
product_name LIKE '__c%':原有条件,确保字段前两位为任意字符、第三位为字符cproduct_name NOT LIKE '__c%c%':新增条件,确保第三位c之后的所有位置都不会再出现字符c,包括长度恰好为3、第三位是c的边界场景也能正常匹配- 若需要兼容大小写(同时匹配第三位是c/C、后续不出现c/C的场景),可以将条件中的
product_name替换为LOWER(product_name)即可
如果你使用的数据库支持正则表达式匹配(如MySQL、PostgreSQL、SQL Server 2017+等),也可以用更简洁的正则写法实现同样逻辑:
-- 以MySQL为例,不同数据库正则函数语法可能略有差异 SELECT product_name, model_year, list_price FROM production.products WHERE product_name REGEXP '^.{2}c[^c]*$'
内容的提问来源于stack exchange,提问作者archterr
相关产品推荐
相关产品推荐

