1. 程式人生 > >很多時候,你缺少的不是知識而是熱情

很多時候,你缺少的不是知識而是熱情

一、前言

有時候遇到這種情況,你用一個like語句查詢,查到的結果中有一些並沒有包含你查詢的關鍵詞的紀錄;
有時候遇到這種情況,你的資料庫自作聰明的大小寫不敏感,讓你在更新時把大小寫不同的兩條記錄都更新了;
有時候遇到這種情況,你的查詢語句一切正常,查詢卻失敗了,報告Illegal mix of collations錯誤;

你很困惑,在想資料庫是不是壞了。。。其實 ,這些都和資料庫字符集的校對規則有關;瞭解了校對規則,你就知道怎樣處理這些問題。

那麼,校對規則是怎麼回事呢?它是一組規則,負責決定某一字符集下的字元進行比較和排序的結果。

比如說,有latin1字符集中的字母A和a,我們需要它們在比較的時候相等,那麼,我們可以使用字符集校對規則 latin1_general_ci;這種校對規則在比較和排序的時候不區分大小寫;如果我們需要他們在比較的時候不等呢?也很簡單,我們可以使用字符集校對規則latin1_bin;這種校對規則會以二進位制的方式對字元進行比較,很明顯,a和A的二進位制編碼不同,比較的結果就是不等。

上面的場景說明了校對規則在最簡單情況下起的作用;實際情況與此並沒有太多不同,只不過稍微有些複雜而已。