编写SQL查询语句:检索名称含'wo'且含'I'或'i'的供应商
正确SQL查询实现
需求说明
检索供应商表(假设表名为SUPPLIERS,原代码中TABLE为占位符)中名称包含字符"wo",且包含字符"I"或"i"的供应商记录。
原代码问题分析
给出的参考代码存在两处错误:
OR '%I%'语法错误,未关联字段与LIKE操作符,数据库无法识别该条件- 逻辑运算符优先级错误:
AND优先级高于OR,原语句实际执行逻辑为(SUPPLIER_NAME LIKE '%WO%' AND SUPPLIER_NAME LIKE '%L%') OR '%I%',完全不符合需求
正确查询语句
1. 严格区分大小写匹配
如果需要精确区分大小写(只匹配小写"wo",以及大写"I"或小写"i"):
SELECT * FROM SUPPLIERS WHERE SUPPLIER_NAME LIKE '%wo%' AND (SUPPLIER_NAME LIKE '%I%' OR SUPPLIER_NAME LIKE '%i%');
注意:括号必须加,确保OR的两个条件先结合,再与前面的AND条件共同生效
2. 不区分大小写匹配(更通用)
如果不需要区分大小写(比如"WO""Wo"都算包含"wo","I""i"都算符合条件),可以用数据库内置的大小写转换函数统一处理:
-- MySQL/MariaDB/SQL Server/Oracle 通用写法 SELECT * FROM SUPPLIERS WHERE LOWER(SUPPLIER_NAME) LIKE '%wo%' AND LOWER(SUPPLIER_NAME) LIKE '%i%';
如果使用PostgreSQL,还可以用ILIKE直接实现不区分大小写的模糊匹配:
-- PostgreSQL 专属写法 SELECT * FROM SUPPLIERS WHERE SUPPLIER_NAME ILIKE '%wo%' AND SUPPLIER_NAME ILIKE '%i%';
内容的提问来源于stack exchange,提问作者Rüfət Əhməd
相关产品推荐
相关产品推荐

