国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SQL Server中的VARCHAR和NVARCHAR數(shù)據(jù)類(lèi)型

哲想軟件 ? 來(lái)源:哲想軟件 ? 2023-04-10 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)系數(shù)據(jù)庫(kù)在表中表示組織的數(shù)據(jù),這些表使用具有不同數(shù)據(jù)類(lèi)型的列,允許它們存儲(chǔ)有效值。開(kāi)發(fā)人員和DBA需要知道并理解每一列的適當(dāng)數(shù)據(jù)類(lèi)型,以獲得更好的查詢(xún)性能。

本文將討論流行的數(shù)據(jù)類(lèi)型VARCHAR()和NVARCHAR()、它們的比較以及SQLServer 中的性能評(píng)估。

SQL中的VARCHAR[ ( n | max ) ]

該VARCHAR數(shù)據(jù)類(lèi)型表示非Unicode可變長(zhǎng)度的字符串的數(shù)據(jù)類(lèi)型。您可以在其中存儲(chǔ)字母、數(shù)字和特殊字符。

N表示以字節(jié)為單位的字符串大小。

VARCHAR數(shù)據(jù)類(lèi)型列最多可存儲(chǔ)8000個(gè)非Unicode字符。

VARCHAR數(shù)據(jù)類(lèi)型每個(gè)字符占用1個(gè)字節(jié)。如果您沒(méi)有明確指定N的值,則它需要1個(gè)字節(jié)的存儲(chǔ)空間。

注意:不要將N與表示字符串中字符數(shù)的值混淆。

以下查詢(xún)使用100個(gè)字節(jié)的數(shù)據(jù)定義VARCHAR數(shù)據(jù)類(lèi)型。

58c648ce-d73a-11ed-bfe3-dac502259ad0.png

它返回長(zhǎng)度為17,因?yàn)槊總€(gè)字符1個(gè)字節(jié),包括一個(gè)空格字符。

58dda06e-d73a-11ed-bfe3-dac502259ad0.png

以下查詢(xún)定義了沒(méi)有任何N值的VARCHAR數(shù)據(jù)類(lèi)型。因此,SQLServer 將默認(rèn)值視為1個(gè)字節(jié),如下所示。

59083acc-d73a-11ed-bfe3-dac502259ad0.png

我們還可以通過(guò)CAST或CONVERT函數(shù)使用VARCHAR。例如,在下面的兩個(gè)示例中,我們聲明了一個(gè)長(zhǎng)度為100字節(jié)的變量,然后使用了CAST運(yùn)算符。

第一個(gè)查詢(xún)返回長(zhǎng)度為30,因?yàn)槲覀儧](méi)有在CAST運(yùn)算符VARCHAR數(shù)據(jù)類(lèi)型中指定N。默認(rèn)長(zhǎng)度為30。

5928caee-d73a-11ed-bfe3-dac502259ad0.png

但是,如果字符串長(zhǎng)度小于30,則取字符串的實(shí)際大小。

594d2704-d73a-11ed-bfe3-dac502259ad0.png

SQL中的NVARCHAR[ ( n | max ) ]

所述NVARCHAR數(shù)據(jù)類(lèi)型是用于Unicode的可變長(zhǎng)度的字符數(shù)據(jù)類(lèi)型。這里,N指的是國(guó)家語(yǔ)言字符集,用于定義Unicode字符串。您可以存儲(chǔ)非Unicode和Unicode字符(日語(yǔ)漢字、韓文等)。

N表示以字節(jié)為單位的字符串大小。

它最多可以存儲(chǔ)4000個(gè)Unicode和非Unicode字符。

VARCHAR數(shù)據(jù)類(lèi)型每個(gè)字符占用2個(gè)字節(jié)。如果不為N指定任何值,則需要2個(gè)字節(jié)的存儲(chǔ)空間。

以下查詢(xún)使用100個(gè)字節(jié)的數(shù)據(jù)定義VARCHAR數(shù)據(jù)類(lèi)型。

596eeb64-d73a-11ed-bfe3-dac502259ad0.png

它返回36的字符串長(zhǎng)度,因?yàn)镹VARCHAR每個(gè)字符存儲(chǔ)占用2個(gè)字節(jié)。

59874df8-d73a-11ed-bfe3-dac502259ad0.png

與VARCHAR數(shù)據(jù)類(lèi)型類(lèi)似,NVARCHAR也有1個(gè)字符(2個(gè)字節(jié))的默認(rèn)值,而沒(méi)有為N指定顯式值。

59b0ed20-d73a-11ed-bfe3-dac502259ad0.png

如果我們使用CAST或CONVERT函數(shù)應(yīng)用NVARCHAR轉(zhuǎn)換而沒(méi)有任何顯式N值,則默認(rèn)值為30個(gè)字符,即60個(gè)字節(jié)。

59d50142-d73a-11ed-bfe3-dac502259ad0.png

以VARCHAR數(shù)據(jù)類(lèi)型存儲(chǔ)Unicode和非Unicode值

假設(shè)我們有一個(gè)表,記錄來(lái)自電子購(gòu)物門(mén)戶的客戶反饋。為此,我們有一個(gè)包含以下查詢(xún)的SQL表。

59fbf180-d73a-11ed-bfe3-dac502259ad0.png

我們?cè)谶@個(gè)表中插入幾個(gè)英語(yǔ)、日語(yǔ)和印地語(yǔ)的示例記錄。[Comment]的數(shù)據(jù)類(lèi)型是VARCHAR,[NewComment]是NVARCHAR()。

5a158a1e-d73a-11ed-bfe3-dac502259ad0.png

查詢(xún)成功執(zhí)行,并在從中選擇一個(gè)值時(shí)給出以下行。對(duì)于第二和第三行,如果數(shù)據(jù)不是英語(yǔ)的,它就不能識(shí)別數(shù)據(jù)。

5a3443f0-d73a-11ed-bfe3-dac502259ad0.png

VARCHAR和NVARCHAR數(shù)據(jù)類(lèi)型:性能比較

我們不應(yīng)在JOIN或WHERE謂詞中混合使用VARCHAR和NVARCHAR數(shù)據(jù)類(lèi)型。它使現(xiàn)有索引無(wú)效,因?yàn)镾QLServer 要求JOIN兩側(cè)的數(shù)據(jù)類(lèi)型相同。如果不匹配,SQLServer 會(huì)嘗試使用CONVERT_IMPLICIT()函數(shù)進(jìn)行隱式轉(zhuǎn)換。

SQLServer 使用數(shù)據(jù)類(lèi)型優(yōu)先級(jí)來(lái)確定目標(biāo)數(shù)據(jù)類(lèi)型。NVARCHAR的優(yōu)先級(jí)高于VARCHAR數(shù)據(jù)類(lèi)型。因此,在數(shù)據(jù)類(lèi)型轉(zhuǎn)換期間,SQLServer 會(huì)將現(xiàn)有的VARCHAR值轉(zhuǎn)換為NVARCHAR。

5a5a8498-d73a-11ed-bfe3-dac502259ad0.png

現(xiàn)在,讓我們執(zhí)行兩個(gè)SELECT語(yǔ)句,根據(jù)它們的數(shù)據(jù)類(lèi)型檢索記錄。

5a74aae4-d73a-11ed-bfe3-dac502259ad0.png

這兩個(gè)查詢(xún)都使用索引查找運(yùn)算符和我們之前定義的索引。

5a8d0472-d73a-11ed-bfe3-dac502259ad0.png

現(xiàn)在,我們切換數(shù)據(jù)類(lèi)型值以與WHERE謂詞進(jìn)行比較。第1列具有VARCHAR數(shù)據(jù)類(lèi)型,但我們指定N'A'將其作為NVARCHAR數(shù)據(jù)類(lèi)型。

類(lèi)似地,col2是NVARCHAR數(shù)據(jù)類(lèi)型,我們指定了引用VARCHAR數(shù)據(jù)類(lèi)型的值“C”。

5aba63fe-d73a-11ed-bfe3-dac502259ad0.png

在查詢(xún)實(shí)際執(zhí)行計(jì)劃中,您得到一個(gè)索引掃描,SELECT語(yǔ)句有一個(gè)警告符號(hào)。

5acedb86-d73a-11ed-bfe3-dac502259ad0.png

此查詢(xún)工作正常,因?yàn)镹VARCHAR()數(shù)據(jù)類(lèi)型可以同時(shí)具有Unicode和非Unicode值。

現(xiàn)在,第二個(gè)查詢(xún)使用索引掃描并在SELECT運(yùn)算符上發(fā)出警告符號(hào)。

5af21b82-d73a-11ed-bfe3-dac502259ad0.png

將鼠標(biāo)懸停在發(fā)出有關(guān)隱式轉(zhuǎn)換的警告的SELECT語(yǔ)句上。SQLServer 無(wú)法正確使用現(xiàn)有索引。這是由于VARCHAR和NVARCHAR數(shù)據(jù)類(lèi)型的數(shù)據(jù)排序算法不同。

如果表有數(shù)百萬(wàn)行,SQLServer必須做額外的工作并使用隱式數(shù)據(jù)轉(zhuǎn)換來(lái)轉(zhuǎn)換數(shù)據(jù)。它可能會(huì)對(duì)您的查詢(xún)性能產(chǎn)生負(fù)面影響。因此,在優(yōu)化查詢(xún)時(shí)應(yīng)避免混合和匹配這些數(shù)據(jù)類(lèi)型。

5b125dca-d73a-11ed-bfe3-dac502259ad0.png

結(jié)論

您應(yīng)該在適當(dāng)?shù)卦O(shè)計(jì)數(shù)據(jù)庫(kù)表及其列數(shù)據(jù)類(lèi)型時(shí)查看您的數(shù)據(jù)要求。通常,VARCHAR數(shù)據(jù)類(lèi)型可以滿足您的大部分?jǐn)?shù)據(jù)需求。但是,如果需要在列中同時(shí)存儲(chǔ)Unicode和非Unicode數(shù)據(jù)類(lèi)型,則可以考慮使用NVARCHAR。但是,在做出最終決定之前,您應(yīng)該查看其性能影響、存儲(chǔ)大小。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:SQL Server 中的VARCHAR和NVARCHAR數(shù)據(jù)類(lèi)型

文章出處:【微信號(hào):哲想軟件,微信公眾號(hào):哲想軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十五):數(shù)據(jù)類(lèi)型詳解

    前言 本篇對(duì)IO-Link規(guī)范的附錄F的數(shù)據(jù)類(lèi)型做個(gè)詳細(xì)解釋?zhuān)戒浂x了 ?基本數(shù)據(jù)類(lèi)型 (Basic Data Types) 和? 組合數(shù)據(jù)類(lèi)型 (Composite Data Types),并
    的頭像 發(fā)表于 01-14 18:25 ?4522次閱讀
    睿遠(yuǎn)研究院丨IO-Link規(guī)范解讀(十五):<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>詳解

    不用編程不用聯(lián)網(wǎng),快速實(shí)現(xiàn)PLC與數(shù)據(jù)庫(kù)雙向數(shù)據(jù)通訊的案例

    ;#039;數(shù)據(jù)處理/初始值' 列,常用的功能如下:1. 限定字符串的長(zhǎng)度:當(dāng)數(shù)據(jù)類(lèi)型設(shè)置為字符串即CHAR[n]時(shí),限定字符串的最大字符數(shù),如‘[n=24]’,范圍1~128;2. 限定
    發(fā)表于 01-14 10:51

    LabVIEW 變體:萬(wàn)能數(shù)據(jù)容器的藝術(shù)

    在LabVIEW的豐富數(shù)據(jù)類(lèi)型體系,變體(Variant)是一種極具靈活性的通用數(shù)據(jù)類(lèi)型,其核心價(jià)值在于能夠兼容并封裝LabVIEW的所有其他數(shù)
    發(fā)表于 01-05 11:06

    使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構(gòu)建高性能AI應(yīng)用

    搜索和調(diào)用外部 AI 模型的 SQL 原生 API。NVIDIA 與微軟共同將 SQL Server 2025 與 NVIDIA Nemotron RAG 開(kāi)放模型集合無(wú)縫連接,這使您能夠在云端或本地環(huán)境
    的頭像 發(fā)表于 12-01 09:31 ?750次閱讀
    使用NVIDIA Nemotron RAG和Microsoft <b class='flag-5'>SQL</b> <b class='flag-5'>Server</b> 2025構(gòu)建高性能AI應(yīng)用

    C語(yǔ)言自動(dòng)類(lèi)型轉(zhuǎn)換

    一、自動(dòng)類(lèi)型轉(zhuǎn)換 數(shù)據(jù)類(lèi)型存在自動(dòng)轉(zhuǎn)換的情況. 自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類(lèi)型運(yùn)算時(shí),在編譯的時(shí)候自動(dòng)完成。 char類(lèi)型數(shù)據(jù)轉(zhuǎn)換為int
    發(fā)表于 11-25 08:04

    C語(yǔ)言強(qiáng)制類(lèi)型轉(zhuǎn)換

    強(qiáng)制類(lèi)型轉(zhuǎn)換是通過(guò)定義類(lèi)型轉(zhuǎn)換運(yùn)算來(lái)實(shí)現(xiàn)的。其一般形式為: (數(shù)據(jù)類(lèi)型) (表達(dá)式) 其作用是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類(lèi)型說(shuō)明符所表示的類(lèi)型
    發(fā)表于 11-24 06:32

    SQL 通用數(shù)據(jù)類(lèi)型

    如何與存儲(chǔ)的數(shù)據(jù)進(jìn)行交互。 下面的表格列出了 SQL 通用的數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 描述 CHARACTER(n) 字符/字符串。固定長(zhǎng)度
    的頭像 發(fā)表于 08-18 09:46 ?697次閱讀

    不用編程序無(wú)需聯(lián)外網(wǎng),將Rockwell羅克韋爾(AB)PLC的標(biāo)簽數(shù)據(jù)存入SQL數(shù)據(jù)庫(kù)

    的編程軟件從PLC導(dǎo)出CSV文件,然后復(fù)制到配置表,如下圖: 再打開(kāi)Navicat查看數(shù)據(jù)庫(kù)數(shù)據(jù),如下圖: 網(wǎng)關(guān)支持西門(mén)子、三菱、歐姆龍、施耐德等幾乎所有的PLC品牌,通過(guò)以上參數(shù)軟件自行切換即可;關(guān)于網(wǎng)關(guān)模塊的詳細(xì)介紹可查
    發(fā)表于 07-31 10:33

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)被加密如何恢復(fù)數(shù)據(jù)

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server數(shù)據(jù)庫(kù)被加密,無(wú)法使用。
    的頭像 發(fā)表于 06-25 13:54 ?635次閱讀
    <b class='flag-5'>數(shù)據(jù)</b>庫(kù)<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>SQL</b> <b class='flag-5'>Server</b><b class='flag-5'>數(shù)據(jù)</b>庫(kù)被加密如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    達(dá)夢(mèng)數(shù)據(jù)庫(kù)常用管理SQL命令詳解

    達(dá)夢(mèng)數(shù)據(jù)庫(kù)常用管理SQL命令詳解
    的頭像 發(fā)表于 06-17 15:12 ?7092次閱讀
    達(dá)夢(mèng)<b class='flag-5'>數(shù)據(jù)</b>庫(kù)常用管理<b class='flag-5'>SQL</b>命令詳解

    大促數(shù)據(jù)庫(kù)壓力激增,如何一眼定位 SQL 執(zhí)行來(lái)源?

    你是否曾經(jīng)遇到過(guò)這樣的情況:在大促活動(dòng)期間,用戶訪問(wèn)量驟增,數(shù)據(jù)庫(kù)的壓力陡然加大,導(dǎo)致響應(yīng)變慢甚至服務(wù)中斷?更讓人頭疼的是,當(dāng)你試圖快速定位問(wèn)題所在時(shí),卻發(fā)現(xiàn)難以確定究竟是哪個(gè)業(yè)務(wù)邏輯SQL
    的頭像 發(fā)表于 06-10 11:32 ?542次閱讀
    大促<b class='flag-5'>數(shù)據(jù)</b>庫(kù)壓力激增,如何一眼定位 <b class='flag-5'>SQL</b> 執(zhí)行來(lái)源?

    IEC101協(xié)議可以傳輸什么類(lèi)型數(shù)據(jù)

    IEC101協(xié)議作為電力系統(tǒng)遠(yuǎn)動(dòng)通信的核心標(biāo)準(zhǔn),其核心能力在于支持多種類(lèi)型數(shù)據(jù)的傳輸,滿足調(diào)度端與場(chǎng)站端(如變電站、發(fā)電廠)的實(shí)時(shí)監(jiān)控、控制及狀態(tài)感知需求。以下從數(shù)據(jù)類(lèi)型、傳輸模式及典型應(yīng)用場(chǎng)景三個(gè)
    的頭像 發(fā)表于 05-21 11:37 ?954次閱讀

    #### KEPServerEX 數(shù)據(jù)存儲(chǔ)插件\\-2

    ,同類(lèi)型的/同設(shè)備的參數(shù)可以設(shè)置成一樣的,這樣存儲(chǔ)到數(shù)據(jù)庫(kù)之后,能夠更方便的在數(shù)據(jù)庫(kù)中進(jìn)行檢索。 默認(rèn)“數(shù)據(jù)項(xiàng)ID”是整形數(shù)據(jù),如需填寫(xiě)字符
    發(fā)表于 04-09 16:09

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server附加數(shù)據(jù)庫(kù)提示“錯(cuò)誤 823”的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫(kù)附加數(shù)據(jù)庫(kù)過(guò)程中比較常見(jiàn)的報(bào)錯(cuò)是“錯(cuò)誤 823”,附加數(shù)據(jù)庫(kù)失敗。 如果數(shù)據(jù)
    的頭像 發(fā)表于 02-28 11:38 ?1027次閱讀
    <b class='flag-5'>數(shù)據(jù)</b>庫(kù)<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>SQL</b> <b class='flag-5'>Server</b>附加<b class='flag-5'>數(shù)據(jù)</b>庫(kù)提示“錯(cuò)誤 823”的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    labview數(shù)據(jù)類(lèi)型與PLC 數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換(來(lái)自于寫(xiě)入浮點(diǎn)數(shù)到匯川 PLC數(shù)據(jù)轉(zhuǎn)換關(guān)鍵的修改)

    為32位無(wú)符號(hào)整型U32 2、將U32拆分為兩個(gè)U16,分高低位寫(xiě)入PLC 3、在PLC,將低位寄存器設(shè)置為浮點(diǎn)數(shù)數(shù)據(jù)類(lèi)型 4、結(jié)果:PLC中一直無(wú)法正確轉(zhuǎn)換。 原因及解決方法: 1、labview
    發(fā)表于 02-24 19:01