如何在MySQL中对字符串数组应用UPPER函数
在MySQL中对IN子句的字符串集合应用UPPER函数的方法
直接逐个处理IN中的值
这是最直观的解决方案,对每个要匹配的字符串单独调用UPPER()函数:
SELECT * FROM your_table WHERE col1 IN (UPPER('abc'), UPPER('def'));
MySQL会先将每个字符串转换为大写,再与col1的值进行匹配。
批量处理大量字符串
如果需要匹配的字符串数量较多,推荐用子查询统一处理,结构更清晰易维护:
SELECT * FROM your_table WHERE col1 IN ( SELECT UPPER('abc') AS val UNION ALL SELECT UPPER('def') AS val UNION ALL SELECT UPPER('ghi') AS val -- 可继续添加更多需要处理的字符串 );
转换列值实现匹配(注意性能)
如果业务允许,也可以反过来将列值转换为大写,再与原字符串匹配:
SELECT * FROM your_table WHERE UPPER(col1) IN ('ABC', 'DEF');
⚠️ 注意:这种写法会导致col1上的索引失效,若表数据量较大,查询性能会受影响,优先选择前两种方案。
MySQL 8.0.19+ 简化写法
如果使用MySQL 8.0.19及以上版本,可借助VALUES语句简化子查询:
SELECT * FROM your_table WHERE col1 IN ( SELECT UPPER(v) FROM (VALUES ('abc'), ('def')) AS t(v) );
内容的提问来源于stack exchange,提问作者shailesh bhagat
相关产品推荐
相关产品推荐

