命令
case when ltrim(rtrim(City_old)) = ltrim(rtrim(City_New)) then 'Y'
不考虑区分大小写的差异。有人能帮我使用区分大小写的匹配吗?提前谢谢
plicqrtu1#
mysql中的区分大小写通常是通过使用 binary 操作员:
binary
(case when binary ltrim(rtrim(City_old)) = binary ltrim(rtrim(City_New)) then 'Y' else 'N' end) as is_same
这假设两个字符串的原始排序规则是相同的(对于同一个表中的两列来说这似乎是合理的)。
1cosmwyk2#
区分大小写或不区分大小写取决于为列定义的字符串排序规则。mysql默认为不区分大小写的排序规则,因此默认情况下所有比较都将忽略大小写。
mysql> select case when 'city' = 'City' then 'Y' else 'N' end as matches; +---------+ | matches | +---------+ | Y | +---------+
您可以通过覆盖排序规则以区分大小写的方式进行比较:
mysql> select case when 'city' collate utf8mb4_bin = 'City' then 'Y' else 'N' end as matches; +---------+ | matches | +---------+ | N | +---------+
必须选择与要比较的字符串的字符集兼容的排序规则。您可以检查当前mysql示例支持哪些兼容的排序规则:
mysql> SELECT * FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY WHERE character_set_name='utf8mb4'; +------------------------+--------------------+ | COLLATION_NAME | CHARACTER_SET_NAME | +------------------------+--------------------+ | utf8mb4_general_ci | utf8mb4 | | utf8mb4_bin | utf8mb4 | | utf8mb4_unicode_ci | utf8mb4 | | utf8mb4_icelandic_ci | utf8mb4 | . . .
所有排序规则都以 _ci 不区分大小写。上面唯一区分大小写的选项是 utf8mb4_bin .同样对于utf8:
_ci
utf8mb4_bin
mysql> SELECT * FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY WHERE character_set_name='utf8'; +--------------------------+--------------------+ | COLLATION_NAME | CHARACTER_SET_NAME | +--------------------------+--------------------+ | utf8_general_ci | utf8 | | utf8_bin | utf8 | | utf8_unicode_ci | utf8 | | utf8_icelandic_ci | utf8 | . . .
选择还取决于您使用的mysql版本。他们不断引入新的字符集和排序规则,试图使mysql支持标准更好。例如,在mysql 8.0中,可以使用排序规则 utf8mb4_0900_as_cs 阅读https://dev.mysql.com/doc/refman/8.0/en/case-sensitivity.html 更多细节。
utf8mb4_0900_as_cs
2条答案
按热度按时间plicqrtu1#
mysql中的区分大小写通常是通过使用
binary
操作员:这假设两个字符串的原始排序规则是相同的(对于同一个表中的两列来说这似乎是合理的)。
1cosmwyk2#
区分大小写或不区分大小写取决于为列定义的字符串排序规则。mysql默认为不区分大小写的排序规则,因此默认情况下所有比较都将忽略大小写。
您可以通过覆盖排序规则以区分大小写的方式进行比较:
必须选择与要比较的字符串的字符集兼容的排序规则。您可以检查当前mysql示例支持哪些兼容的排序规则:
所有排序规则都以
_ci
不区分大小写。上面唯一区分大小写的选项是utf8mb4_bin
.同样对于utf8:
选择还取决于您使用的mysql版本。他们不断引入新的字符集和排序规则,试图使mysql支持标准更好。例如,在mysql 8.0中,可以使用排序规则
utf8mb4_0900_as_cs
阅读https://dev.mysql.com/doc/refman/8.0/en/case-sensitivity.html 更多细节。