日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

char* 大小_SQL Server中char, nchar, varchar和nvarchar数据类型有何区别

發布時間:2025/3/19 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 char* 大小_SQL Server中char, nchar, varchar和nvarchar数据类型有何区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當問及CHAR,VARCHAR,NCHAR和NVARCHAR這些數據類型之間的差異時,這個看似很簡單,但有時您也會感到困惑。

要在數據庫存儲字符、數值和特殊字符可以使用這4種數據類型,那么這4種數據類型有什么不同呢?

  • CHAR vs VARCHAR
  • NCHAR vs NVARCHAR

通過例子,我們將逐一研究它們。

DECLARE @string CHAR(20) SET @string = 'Robin' SELECT @string AS 'String', DATALENGTH(@string) AS 'Datalength' , LEN(@string) AS 'Len'

注意:LEN()方法計算的長度不包括字符串尾隨空格的字符長度,而DATALENGTH()方法它是計算字符串表達式中字符占用的字節空間數。

如您所知,我們用單引號表示字符值,例如'Robin'。但是您知道我們也可以用雙引號來表示這些相同的字符,就像編程語言中表示字符串一樣,例如“Robin”,這可以通過以下設定來實現:

SET QUOTED_IDENTIFIER OFF

默認情況下,它被設置為ON。

CHAR vs VARCHAR

關于CHAR數據類型:

  • 它是一種固定長度的數據類型
  • 用于存儲非unicode字符
  • 每個字符占用1個字節的空間
  • 如果提供給CHAR數據類型的變量的字符長度值比聲明變量要短,那么該值將被右填充空格以匹配列長度的大小。

    DECLARE @string CHAR(20) SET @string = 'Robin' SELECT @string AS 'String', DATALENGTH(@string) AS 'Datalength' , LEN(@string) AS 'Len'

    正如您在上面看到的,盡管字符的長度為5,但變量所占用的字節數為20,這意味著不管該變量中存儲的字符是什么,它都將占用預先定義的字節來存儲值。

    關于VARCHAR數據類型:

  • 它是可變長度的數據類型
  • 用于存儲非unicode字符
  • 每個字符占用1字節空間
  • DECLARE @string VARCHAR(20) SET @string = 'Robin' SELECT @string AS 'String', DATALENGTH(@string) AS 'Datalength' , LEN(@string) AS 'Len'

    正如您在上面看到的,它的長度顯示為5,這意味著它只是占用實際變量長度的字節數,這樣可避免浪費數據庫空間。

    注意:如果在執行CREATE TABLE或ALTER TABLE時,設定ANSI_PADDING為OFF,則定義為NULL的CHAR列將被視為VARCHAR。

    那我們該什么時候使用什么?

    如果您預先能知道要使用的列它就是固定長度,那么就使用CHAR數據類型,如果數據可能發生變化,則使用VARCHAR。

    NCHAR vs NVARCHAR

    關于NCHAR數據類型:

  • 它是一種固定長度的數據類型
  • 用于存儲Unicode字符(例如阿拉伯語、德語等語言)
  • 每個字符占用2字節空間
  • DECLARE @string NCHAR(20) SET @string = 'Robin' SELECT @string AS 'String', DATALENGTH(@string) AS 'Datalength' , LEN(@string) AS 'Len'

    正如您在上面看到的,數據長度列顯示40字節,盡管聲明的大小是20,這是因為NCHAR為每個字符保留2字節的空間。

    關于NVARCHAR數據類型:

  • 它是可變長度的數據類型
  • 用于存儲Unicode字符
  • 每個字符占用2字節空間
  • DECLARE @string NVARCHAR(20) SET @string = 'Robin' SELECT @string AS 'String', DATALENGTH(@string) AS 'Datalength' , LEN(@string) AS 'Len'

    在上圖的輸出結果中,您可以看到DATALENGTH列長度是10,這是因為它為每個字符占用2字節的空間,而數據長度只有5個字符,因此它將在數據庫中占用10字節的空間。

    那我們該什么時候使用什么?

    如果您的列將存儲固定長度的Unicode字符,如法語、阿拉伯語等字符,那么使用NCHAR,如果存儲列數據是Unicode,并且長度可以變化,那么使用NVARCHAR。

    總結

    下圖已完整了列出了這4種類型的區別。

    查詢NCHAR或NVARCHAR要比查詢CHAR或VARCHAR慢一些,所以不要用NCHAR或NVARCHAR來存儲非unicode字符,即使這種數據類型支持這一點。

    這篇文章只是為了讓您了解CHAR、VARCHAR、NCHAR和NVARCHAR數據類型之間的差異,因為它們都用于存儲字符、數字或特殊字符。

    感謝您的閱讀,碼字不易,如果覺得對您有幫助,記得給我點個贊和關注哦!

    總結

    以上是生活随笔為你收集整理的char* 大小_SQL Server中char, nchar, varchar和nvarchar数据类型有何区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。