Mysql
如何儲存文件路徑,使用哪種排序規則?
我有一個儲存 Windows 系統路徑的表。我正在為如何儲存它們,特別是使用哪種排序規則而摸不著頭腦。
路徑是 unicode 字元串。它們不區分大小寫,因此 ‘utf8_bin
is probably not the best thing to do. However all the
utf8_*_ci` 排序規則允許對應於不同路徑的字元串之間相等。我知道路徑比較通常比字元串比較涉及更多,因為可能存在父 (
..
) 目錄、符號連結、8.3 替代命名等。我假設文件夾是以系統一致的方式輸入的。人們在儲存路徑時會做什麼?他們是否假設文件夾確實總是以一致的方式儲存,並說總是以小寫或大寫形式儲存 Windows 路徑並使用
utf8_general
?還是其他排序規則?或者乾脆忘記使用伺服器端路徑比較的想法?
直到 MySQL 8.0 才有“不區分大小寫,區分重音”的排序規則:
mysql> set names utf8mb4 collate utf8mb4_0900_as_ci; Query OK, 0 rows affected (0.00 sec) mysql> select 'a'='A', "a" = "à" ; +---------+------------+ | 'a'='A' | "a" = "à" | +---------+------------+ | 1 | 0 | +---------+------------+ 1 row in set (0.00 sec)