Mysql

如何儲存文件路徑,使用哪種排序規則?

  • February 3, 2020

我有一個儲存 Windows 系統路徑的表。我正在為如何儲存它們,特別是使用哪種排序規則而摸不著頭腦。

路徑是 unicode 字元串。它們不區分大小寫,因此 ‘utf8_bin is probably not the best thing to do. However all theutf8_*_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)

引用自:https://dba.stackexchange.com/questions/258462