假设我有一个字段 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/