日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL Server數(shù)據(jù)庫中正確使用DISTINCT大小寫

我們今天是要和大家一起討論的是SQL Server數(shù)據(jù)庫中正確使用DISTINCT的大小寫問題,在實際操作中SQL Server為你提供了在你的數(shù)據(jù)庫中存儲混合的大小寫數(shù)據(jù)的實際操作能力,但是根據(jù)你怎樣創(chuàng)建數(shù)據(jù)庫,SQL Server將在你給出T-SQL命令時忽視大小寫。

你可能面對的一個問題是你想從一個表獲得只包含不同值的列表,來顯示你的表中不

SQL Server為你提供了在你的數(shù)據(jù)庫中存儲混合大小寫數(shù)據(jù)的能力,但是根據(jù)你怎樣創(chuàng)建數(shù)據(jù)庫,SQL Server數(shù)據(jù)庫將在你給出T-SQL命令時忽視大小寫。你可能面對的一個問題是你想從一個表獲得只包含不同值的列表,來顯示你的表中不同,但是如果你的數(shù)據(jù)庫是按照不區(qū)分大小寫來建立的,那么SQL Server數(shù)據(jù)庫中使用DISTINCT條件語句不會顯示這些不同,它只會將所有的值放在一起。所以在這方面有什么選擇嗎?

專家解答

為了說明這個動作,我們將使用一個區(qū)分大小寫和一個不區(qū)分大小寫的數(shù)據(jù)庫來看看它工作的兩種方式。

第一組查詢使用了AdventureWorks數(shù)據(jù)庫,它被配置為區(qū)分大小寫。為了得到從你的數(shù)據(jù)庫而來的集合,你可以運(yùn)行這個查詢:

 
 
 
  1. SELECT name, collation_name   
  2. FROM master.sys.databases  

我們將查詢AdventureWorks數(shù)據(jù)庫中的Preson.Contact的數(shù)據(jù)。所有的數(shù)據(jù)都是作為混合大小寫來建立的,所以當(dāng)我們運(yùn)行這個查詢的時候我們沒有得到重復(fù)的值。

 
 
 
  1. SELECT DISTINCT TOP 10 FirstName   
  2. FROM Person.Contact   
  3. WHERE FirstName LIKE 'A%'   
  4. ORDER BY 1  

如果你更新一條記錄并將FirstName從“Adam”改為“ADAM”,那么當(dāng)運(yùn)行這個查詢時我們會獲得兩個不同的值。

 
 
 
  1. UPDATE Person.Contact   
  2. SET FirstName = 'ADAM'   
  3. WHERE ContactID = 62   
  4. GO   
  5. SELECT DISTINCT TOP 10 FirstName   
  6. FROM Person.Contact   
  7. WHERE FirstName LIKE 'A%'   
  8. ORDER BY 1  

正如你看到的,現(xiàn)在“Adam”和“ADAM”作為不同的值來顯示。

下一步我們將要做的是在一個不區(qū)分大小寫的數(shù)據(jù)庫中創(chuàng)建一個新表然后從Person.Contact加載所有的數(shù)據(jù)到這個新表中。

 
 
 
  1. CREATE TABLE Test.dbo.contact (FirstName nvarchar(50))   
  2. GO   
  3. INSERT INTO Test.dbo.contact   
  4. SELECT FirstName FROM Person.Contact   
  5. GO   
  6. SELECT DISTINCT TOP 10 FirstName   
  7. FROM Test.dbo.contact   
  8. WHERE FirstName LIKE 'A%'   
  9. ORDER BY 1   
  10. GO  

當(dāng)我們運(yùn)行SELECT查詢時你可以看到輸出將“Adam”和“ADAM”結(jié)合起來,因為不區(qū)分大小寫。

為了解決這個問題我們可以將這個查詢按照下面的方式修改使得這個收集在FirstName字段上區(qū)分大小寫。

 
 
 
  1. SELECT DISTINCT TOP 10 FirstName COLLATE sql_latin1_general_cp1_cs_as   
  2. FROM Test.dbo.contact   
  3. WHERE FirstName LIKE 'A%'   
  4. ORDER BY 1  

當(dāng)這個運(yùn)行時,我們看到了值“Adam”和“ADAM”。

所以根據(jù)你的數(shù)據(jù)庫是怎樣建立的,你將能夠或不能看到這個不同。

為了給你顯示另一個例子,下面是一個快速選擇區(qū)分大小寫或不區(qū)分大小寫選項的方法。

我們運(yùn)行的第一個查詢是SQL Server數(shù)據(jù)庫中使用區(qū)分大小寫,所以四條記錄都將顯示出來。

 
 
 
  1. select distinct (item) COLLATE sql_latin1_general_cp1_cs_as   
  2. FROM (   
  3. select 'abcd' item   
  4. union all select 'ABCD'   
  5. union all select 'defg'   
  6. union all select 'deFg') items  

第二個查詢中不同的是收集的名稱。當(dāng)這個查詢使用不區(qū)分大小寫時,我們只獲得兩條記錄。

 
 
 
  1. select distinct (item) COLLATE sql_latin1_general_cp1_ci_ai   
  2. FROM (   
  3. select 'abcd' item   
  4. union all select 'ABCD'   
  5. union all select 'defg'   
  6. union all select 'deFg') items  

以上的相關(guān)內(nèi)容就是對SQL Server數(shù)據(jù)庫中使用DISTINCT的大小寫問題的介紹,望你能有所收獲。


網(wǎng)站題目:SQL Server數(shù)據(jù)庫中正確使用DISTINCT大小寫
URL網(wǎng)址:http://www.5511xx.com/article/cdejcho.html