mysql 不区分大小写的问题,即使使用 COLLATE utf8_general_ci

标签 mysql case collation

假设我有一个字段 col2,其值为 caSEINseNSItiVe。在下面运行此查询不会给我 col2=CD。我尝试了 LIKE 和 LIKE BINARY。

SELECT col1,
CASE 
  WHEN col2 = 'CASEINSENSITIVE' THEN 'CD'
  ELSE col2
END 
FROM Table COLLATE utf8_general_ci

该表的排序规则设置为 utf8_bin。我无法更改设置。我需要在创建报告时切换到 utf8_general_ci,同时保持 utf8_bin 为默认值。

有什么建议吗?

最佳答案

像这样使用 UPPER 或 LOWER 函数:

SELECT col1,
CASE 
  WHEN UPPER(col2) = 'CASEINSENSITIVE' THEN 'CD'
  WHEN UPPER(col2) = 'ANYUPPERTEXT' THEN 'UP'
  WHEN LOWER(col2) = 'somelowertext' THEN 'LW'
  WHEN UPPER(col2) = UPPER('anytext that will also be UPPERed') THEN '??'
  ELSE col2
END 
FROM Table

关于mysql 不区分大小写的问题,即使使用 COLLATE utf8_general_ci,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714451/

相关文章:

sql-server - 帮助使用 case 和 group 进行 sql 查询

MYSQL - 根据单个 CASE 语句更新多个字段

mysql - 为通用字符选择表排序规则

php - 防止非法混合排序规则/检查 php 中的正确排序规则

mysql - unicode 字符串 : difference between Habo and Håbo

mysql - 查询 : getting the last record for each member trouble cause by another value

php - 脚本中的分页错误

php - MySQL查询排序正确信息

mysql - 从 MySql 中的架构获取表行数

sql - SQL 中 Case 语句的语法错误