溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Microsoft SQL Server中條件字段是Nvarchar類型的,條件有中文的無(wú)法查詢的原因及處理方法

發(fā)布時(shí)間:2020-07-11 07:04:13 來(lái)源:網(wǎng)絡(luò) 閱讀:5680 作者:holy2009 欄目:數(shù)據(jù)庫(kù)

條件中帶的是中文無(wú)法查詢出,因?yàn)樽侄蝧ender_su_name是nvarchar類型的,需要前面接個(gè)N



SELECT * FROM [test].[dbo].[Ship_User_Email]  WHERE [sender_su_name]=N'獎(jiǎng)勵(lì)'




為什么要帶N如下解釋:

使用 Unicode 數(shù)據(jù)

Unicode 標(biāo)準(zhǔn)為全球商業(yè)領(lǐng)域中廣泛使用的大部分字符定義了一個(gè)單一編碼方案。所有的計(jì)算機(jī)都用單一的 Unicode 標(biāo)準(zhǔn) Unicode 數(shù)據(jù)中的位模式一致地翻譯成字符。這保證了同一個(gè)位模式在所有的計(jì)算機(jī)上總是轉(zhuǎn)換成同一個(gè)字符。數(shù)據(jù)可以隨意地從一個(gè)數(shù)據(jù)庫(kù)或計(jì)算機(jī)傳送到另一個(gè)數(shù)據(jù)庫(kù)或計(jì)算機(jī),而不用擔(dān)心接收系統(tǒng)是否會(huì)錯(cuò)誤地翻譯位模式。

對(duì)于用一個(gè)字節(jié)編碼每個(gè)字符的數(shù)據(jù)類型,存在的問(wèn)題之一就是此數(shù)據(jù)類型只能表示 256 個(gè)不同的字符。這就迫使對(duì)于不同的字母表(例如相對(duì)較小的歐洲字母表)采用多重編碼規(guī)格(或者代碼頁(yè))。而且也不可能處理象日文漢字或韓國(guó)文字這樣具有數(shù)千個(gè)字符的字母表。

每個(gè) Microsoft? SQL Server? 排序規(guī)則都有一個(gè)對(duì)表示 char、varchar 和 text 值中的每個(gè)字符定義位模式進(jìn)行定義的代碼頁(yè)??蔀閭€(gè)別的列和字符常量指派不同的代碼頁(yè)??蛻舳擞?jì)算機(jī)使用與操作系統(tǒng)區(qū)域設(shè)置相關(guān)聯(lián)的代碼頁(yè)解釋字符位模式。有很多種不同的代碼頁(yè)。一些字符出現(xiàn)在某些代碼頁(yè)上,但并不出現(xiàn)在其它的代碼頁(yè)上。某些字符在一些代碼頁(yè)上用一個(gè)位模式定義,而在其它的代碼頁(yè)上卻用另一個(gè)位模式定義。當(dāng)您設(shè)計(jì)必須處理不同語(yǔ)言的國(guó)際性系統(tǒng)時(shí),為了滿足不同國(guó)家/地區(qū)的語(yǔ)言需求,給所有的計(jì)算機(jī)挑選代碼頁(yè)就變得困難了。要保證每一臺(tái)計(jì)算機(jī)與使用不同代碼頁(yè)的系統(tǒng)交互時(shí)都進(jìn)行正確的翻譯也是困難的。

Unicode 規(guī)格通過(guò)采用兩個(gè)字節(jié)編碼每個(gè)字符使這個(gè)問(wèn)題迎刃而解。轉(zhuǎn)換最通用商業(yè)語(yǔ)言的單一規(guī)格具有足夠多的 2 字節(jié)的模式 (65,536)。因?yàn)樗械?Unicode 系統(tǒng)均一致地采用同樣的位模式來(lái)代表所有的字符,所以當(dāng)從一個(gè)系統(tǒng)轉(zhuǎn)到另一個(gè)系統(tǒng)時(shí),將不會(huì)存在未正確轉(zhuǎn)換字符的問(wèn)題。通過(guò)在整個(gè)系統(tǒng)中使用 Unicode 數(shù)據(jù)類型,可盡量減少字符轉(zhuǎn)換問(wèn)題。

在 Microsoft SQL Server 中,以下數(shù)據(jù)類型支持 Unicode 數(shù)據(jù): 

nchar

nvarchar

ntext 

說(shuō)明  這些數(shù)據(jù)類型的前綴 n 來(lái)自 SQL-92 標(biāo)準(zhǔn)中的 National(Unicode)數(shù)據(jù)類型。

nchar、nvarchar 和 ntext 的用法分別與 char、varchar 和 text 的用法一樣,但在以下方面不同: 

Unicode支持的字符范圍更大。

存儲(chǔ) Unicode 字符所需要的空間更大。

nchar 和 nvarchar 列最多可以有 4,000 個(gè)字符,而不象 char 和 varchar 字符那樣可以有 8,000 個(gè)字符。

Unicode 常量使用 N 開(kāi)頭來(lái)指定:N'A Unicode string'。

所有 Unicode 數(shù)據(jù)都使用相同的 Unicode 代碼頁(yè)。排序規(guī)則不控制用于 Unicode 列的代碼頁(yè),僅控制比較規(guī)則和是否區(qū)分大小寫(xiě)等特性。 


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI