即使使用COLLATE utf8_general_ci,mysql也不区分大小写

时间:2012-12-05 00:34:26

标签: mysql case collation

我们假设我有一个字段col2,其值为caSEINseNSItiVe。在下面运行此查询不会给我col2 = CD。我试过像LIKE和LIK 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为默认值。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用像这样的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