今天一位朋友提出一個我過去一直沒注意到的SQL查詢問題
也就是查詢內容大小寫敏感問題,在過去只要能查出想要的結果就好,卻沒去限制有大小寫之分的資安問題

通常我們db用的文字編碼都是utf-8,因此將需要透過utf_bin來做校正
所以幫我們在建立資料庫時,可以這樣做
CREATE DATABASE d1 DEFAULT CHARACTER SET utf8  COLLATE utf8_bin;

但對於過去所建置的資料表庫,則在查詢時可以這樣做

select * from test where c1 like 'ab%' collate utf8_bin;

還有另外一個方式,通過binary關鍵字,將字串以二進制做比對,
由於大小寫在二進制肯定不同,因此也可以被認為對大小寫區分的一種方式

select * from test where binary c1 like 'ab%';

如果希望使用聚合函數時,也能對大小寫敏感的語法

select * from test where binary c1 in ('A','B');
創作者介紹
創作者 忽倫 的頭像
忽倫

一段輝煌的回憶,一個冬日的故事

忽倫 發表在 痞客邦 留言(0) 人氣()