有時候查詢數據庫的時候會發現(比如做重名檢查的時候):數據庫的查詢時對大小寫不敏感的,也就是 A 和 a 是一樣的。
也就是說 select * from tabletest where name = 'a' 和 select * from tabletest where name = 'A'
兩條 sql 語句的執行結果是一樣的。
該怎么辦呢。。。百度了一下,才了解到這關系到了 SQL SERVER 的排序規則。之前在安裝 SQL SERVER 的時候曾經見到過這個選項,但是一直沒明白是啥意思。。。
可能這個排序規則的翻譯也比較迷惑,英文原文是 collation ,查了一下詞典,好像意思是校對整理什么的,反正沒看見直接有排序的意思。
不過這個東西也確實跟排序有關,比如有一系列的姓名(中文)數據,就可以指定按拼音排序(Chinese_PRC_)呀,還是按筆畫排序(Chinese_PRC_Stroke_)什么的。。。
更多排序規則可查看:https://technet.microsoft.com/zh-cn/library/ms188046.aspx
這里是要為了解決大小寫敏感的問題,好吧,也在上面那個網頁中有解釋,可以設置以下參數:
- CaseSensitivity
- CI 指定不區分大小寫, CS 指定區分大小寫。
- AccentSensitivity
- AI 指定不區分重音, AS 指定區分重音。
- KanatypeSensitive
- Omitted 指定不區分假名類型, KS 指定區分假名類型。
- WidthSensitivity
- Omitted 指定不區分全半角, WS 指定區分全半角。
設置排序規則的 sql 語句為:
COLLATE Chinese_PRC_CS_AS_KS_WS
前半部分是排序相關的,后半部分就是上面列的那四個選項了,可以根據需要隨意添加修改。。。具體怎么加。。。
--要不就百度一下,或者看上面的MSDN鏈接里面的例子,不想寫了。。。
MSDN:https://technet.microsoft.com/zh-cn/library/ff848763.aspx
排序規則可以對服務器進行設置,也可以對數據庫進行設置,可以對數據表中的列進行設置,或者隨用隨設也可以
除了使用 sql 語句設置,還可以通過 SSMS 圖形界面設置:
服務器設置可能比較麻煩,需要先停止服務器什么的,最好在安裝的時候設置好吧
數據庫就直接屬性選項里面有下拉列表可以選擇設置。
對數據表中的列,在表設計器下面的列屬性上可以設置
嗯,還有圖形界面可以選擇選項(●'◡'●)
請原諒我寫的簡單。。。(完)