UPPER(str)仅接受一个字符串参数将ASCII字母转为大写非ASCII字符、数字、符号不变传入NULL返回NULL在WHERE中使用会导致索引失效应优先通过校对规则如utf8mb4_general_ci实现大小写不敏感匹配。UPPER函数怎么用参数有什么讲究UPPER(str) 只接受一个参数必须是字符串类型VARCHAR、TEXT、甚至数字会被隐式转为字符串返回全大写结果。它不修改原字段只是计算时转换。如果传入 NULL结果仍是 NULL不是空字符串中文、日文、俄文字母等非 ASCII 字符不受影响只对 ASCII 字母a–z生效数字和符号原样保留比如 UPPER(hello123!) → HELLO123!WHERE里用UPPER做大小写不敏感匹配很危险想查邮箱时不区分大小写别直接写 WHERE UPPER(email) UPPER(UserExAmPlE.com) —— 这会让索引失效哪怕 email 字段有索引也会全表扫描。更安全的做法是确保字段本身用 utf8mb4_unicode_ci 或 utf8mb4_0900_as_cs 以外的 collation比如 utf8mb4_general_ci直接 WHERE email UserExAmPlE.com 就自动忽略大小写如果必须用 UPPER比如要统一输出至少把函数放在右边WHERE email UPPER(UserExAmPlE.com) 不行还是得左边也 UPPER —— 所以真要模糊查优先改 collation而不是靠函数兜底和 LOWER、UCASE 的区别在哪UPPER 和 UCASE 完全等价MySQL 文档里说 UCASE 是 UPPER 的同义词二者行为、性能、兼容性毫无差别。别纠结选哪个团队统一就行。 Fotor AI Image Generator Fotor 平台的 AI 图片生成器