1. 程式人生 > >淺談SQL語句大小寫是否區分的問題--【葉子】

淺談SQL語句大小寫是否區分的問題--【葉子】

一、例項介紹

SQL語句大小寫到底是否區分呢?我們先從下面的這個例子來看一下:

例:

--> 建立表,插入資料:

declare @maco table (number int,myvalue varchar(2))

insert into @maco select 1,'aa' union all

select 2,'Aa' union all

select 3,'aA' union all

select 4,'AA'

--不區分大小寫

select * from @maco WHERE nn='aa'

--區分大小寫

select  * from @maco WHERE

nn='aa' collate Chinese_PRC_CS_AI

注:我用的是Sql Server 2005。

從上面的例子我們可以看到第一句不區分,而第二句區分。可是每個語句不能都加上個collate Chinese_PRC_CS_AI吧?

我們可以這樣,看下面的例子:

例:

--不區分大小寫

ALTER TABLE My_table ALTER Column colname nvarchar(100) collate Chinese_PRC_CI_AS     

--區分大小寫

ALTER TABLE My_table ALTER Column colname nvarchar(100) collate

Chinese_PRC_CS_AS

從上面的例子我們可以看到第一句不區分,而第二句區分。可是我們不能每個表都進行一下修改吧?

我們可以再這樣,看下面的例子:

例:

--不區分大小寫

ALTER DATABASE databasename collate Chinese_PRC_CI_AS    

--區分大小寫

ALTER DATABASE databasename collate Chinese_PRC_CS_AS  

二、引數介紹

Chinese_PRC_指標對大陸簡體字UNICODE的排序規則。

排序規則的後半部份(即字尾)含義:

_BIN 二進位制排序_CI(CS) 是否區分大小寫:CI不區分,CS區分

_AI(AS) 是否區分重音:AI不區分,AS區分   

_KI(KS) 是否區分假名型別:KI不區分,KS區分 

_WI(WS) 是否區分寬度:WI不區分,WS區分

三、整體介紹

在安裝SQL時,我們可以選擇區分大小寫或安裝完以後重建mastar,再選擇區分大小  

下面是rebuildm.exe 的路徑:

C:/Program  Files/Microsoft  SQL Server/80/Tools/Binn/rebuildm.exe        

若要修改排序規則,按照上面的引數設定即可。

若只修改一個表,用ALTER   TABLE語句

若修改一個庫的預設排序規則,用ALTER DATABASE語句    

若修改整個伺服器的預設排序規則,用Rebuildm.exe重建master庫

後記:第一次寫這種東西,也不知道是非介紹的清楚,有不準確,不清楚的地方,還望見諒!

© 【葉子】http://blog.csdn.NET/maco_wang 原創作品,轉貼請註明作者和出處,留此資訊。

                                                                                    ------葉子,2008年5月27日晚