【发布时间】:2017-04-15 07:51:23
【问题描述】:
这是一个有趣的挑战问题,因为可以有多种方法来解决这个问题:)
我有一个唯一但区分大小写的 ID 列,例如:
----- ID ------
0018000001K6dkh -> record 1
0018000001K6dkH -> record 2 (different from record 1)
由于 MySQL 在 utf8 中不区分大小写,因此它认为两个 ID 值相同:
SELECT COUNT(*) FROM table WHERE id='0018000001K6dkh' //returns 2 instead of 1
SELECT COUNT(*) FROM table WHERE id='0018000001K6dkH' //returns 2 instead of 1
我需要构建一个 MySQL 函数,我可以将其应用于此列,以将所有 ID 转换为 不区分大小写和 唯一 ID,例如:
function('0018000001K6dkh') = something
function('0018000001K6dkH') = something different
function('0018000000ttzlB') = something even different
function('0018000000tTzlB') = something even more different
注意:我不想使用排序规则,因为我必须更改我的应用程序 (Laravel PHP) 中的所有 WHEREs 和 JOINs。我想永久更改 ID。
【问题讨论】:
-
我很确定您可以更改字段的排序规则。
-
大声笑你是对的,它有效。你想回答这个问题吗?
标签: mysql uniqueidentifier case-sensitive case-insensitive