亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

詳解SQL Server中的數(shù)據(jù)類型

2024-08-31 01:04:23
字體:
供稿:網(wǎng)友

前言

前面幾篇文章我們講解了索引有關知識,這一節(jié)我們再繼續(xù)我們下面內(nèi)容講解,簡短的內(nèi)容,深入的理解。

數(shù)據(jù)類型

SQL Server支持兩種字符數(shù)據(jù)類型,一種是常規(guī),另外一種則是Unicode。常規(guī)數(shù)據(jù)類型包括CHAR和VARCHAR,Unicode數(shù)據(jù)類型包括NCAHR和NVARCHAR。常規(guī)字符的每個字符使用1個字節(jié)存儲,而Unicode數(shù)據(jù)的每個字符要求2個字節(jié)。常規(guī)字符列限制為僅僅只針對于英語,而Unicode則是針對于多種語言。兩種字符數(shù)據(jù)類型的文本表示方式也不相同,在表示常規(guī)字符文本時,只需要使用單引號,比如'Hello,my name is JeffckyWang,I'm from cnblogs',而對于Unicode字符文本時,需要指定字符N作為前綴,即N‘Hello,my name is JeffckyWang,I'm from cnblogs'。

名稱中沒有VAR元素的任何數(shù)據(jù)類型(CHAR、NCHAR)具有固定長度,即SQL Server按照列定義大小保留行空間,而不是按照字符中的實際字符保留空間。比如某列定義大小為CHAR(25),則SQL Server在該行保留25個字符的空間,而不管存儲字符串的長度。

名稱中含有VAR元素的數(shù)據(jù)類型(VARCHAR、NVARCHAR)具有可變長度,即SQL Server根據(jù)存儲需要,在行中使用盡可能多的存儲空間存儲字符串,同時外加兩個額外的字節(jié)偏移數(shù)據(jù)。例如,如果將某列定義為VARCHAR(25),此時支持的最大字符數(shù)為25,但實際上按照字符串中實際字符確定存儲量。-摘抄自SQL Server 2012 T-SQL基礎教程。

這里關于Unicode字符數(shù)據(jù)類型我們需要重點理解下。我們先創(chuàng)建一個表,如下:

CREATE TABLE UnicodeType( firstname VARCHAR(5) NOT NULL, lastname NVARCHAR(5) NOT NULL);

此時我們手動插入數(shù)據(jù),正常插入,如下:

INSERT dbo.UnicodeType  ( firstname, lastname )VALUES ( '11111', -- firstname - varchar(5)   N'啊的發(fā)個好' -- lastname - nvarchar(5)   )

字符都完全插入表中,如下:

sqlserver,數(shù)據(jù)類型

此時我們將firstname,插入五個中文試試如下:

INSERT dbo.UnicodeType  ( firstname, lastname )VALUES ( '達得到讓人', -- firstname - varchar(5)   N'達得到讓人' -- lastname - nvarchar(5)   )

此時出現(xiàn)如下結(jié)果:

sqlserver,數(shù)據(jù)類型

也就是說在常規(guī)字符類型如上述VARVHAR中定義為五個字符,此時我們插入五個中文字符則會被截取,當然也插入不進去。因為上述已經(jīng)明確講了1個非英語字符串相當于兩個字節(jié),此時中文所占用的是十個字節(jié),而此時VARCHAR才五個字符,所以出現(xiàn)警告。我們再來將firstname插入兩個中文兩個英文或者數(shù)字看看

INSERT dbo.UnicodeType  ( firstname, lastname )VALUES ( '達得1', -- firstname - varchar(5)   N'達得到讓人' -- lastname - nvarchar(5)   )

此時插入進去為出現(xiàn)警告,因為此時兩個中文字符即四個字節(jié)加上一個數(shù)字字節(jié)剛好五個字節(jié),所以能正常插入,我們再來看看lastname,由上知,既然英文或者數(shù)字被當做一個字節(jié),那么我們對lastname插入四個中文字符和兩個英文字節(jié)剛好十個字節(jié)應該是好使的。我們看看:

INSERT dbo.UnicodeType  ( firstname, lastname )VALUES ( '達得1', -- firstname - varchar(5)   N'達得到讓ab' -- lastname - nvarchar(5)   )

oh,shit,此時居然出錯了,如下:

sqlserver,數(shù)據(jù)類型

我們上述分析的不是有理有據(jù)么,難道這里英文不是占用一個字節(jié)么,我們插入一個英文試試。

INSERT dbo.UnicodeType  ( firstname, lastname )VALUES ( '達得1', -- firstname - varchar(5)   N'達得到讓b' -- lastname - nvarchar(5)   )

結(jié)果正確了,實踐是檢驗真理的唯一標準,從這里我們可以看出:在常規(guī)字符中,一個中文會當做是兩個字節(jié)來使用,一個英文會當做是一個字節(jié)使用,但是在Unicode中,一個中文也是會當做兩個字節(jié)來使用,但是一個英文也會當做是兩個字節(jié)來使用。至此我們可以得出結(jié)論,個人一直以為在Unicode中,將英文是作為一個字節(jié)存儲,見識短啊。

常規(guī)字符和Unicode中一個中文字符用兩個字節(jié)存儲,而對英文,常規(guī)字符用一個字節(jié)存儲,而Unicode依然是用兩個字節(jié)存儲。

字符串函數(shù)

對字符串操作的函數(shù)有SUBSTRING、LEFT、RIGHT、CHARINDEX、PATINDEX、REPLACE、REPICATE、STUFF、UPPER、LOWER、RTRIM、LTRIM、FORMAT。對于簡單的函數(shù)我們略過,下面我們來講講幾個需要注意的地方。

LEN與DATALENGTH比較

我們首先創(chuàng)建如下測試表

CREATE TABLE StringFun( firststr VARCHAR(max) NOT NULL, secondstr TEXT NOT NULL);

我們插入測試數(shù)據(jù)

INSERT dbo.StringFun  ( firststr, secondstr )VALUES ( '我是JeffckyWang,我來自于博客園,專注于.NET技術', -- firststr - varchar(max)   '我是JeffckyWang,我來自于博客園,專注于.NET技術' -- secondstr - text   )

我們首先利用LEN函數(shù)來返回firststr和secondstr的字符串長度大小

SELECT LEN(firststr) AS VARCAHRFieldSize FROM dbo.StringFunSELECT LEN(secondstr) AS TEXTFieldSize FROM dbo.StringFun

sqlserver,數(shù)據(jù)類型

好極了,出錯了。LEN函數(shù)無法對TEXT進行操作。我們接著往下看。

SELECT DATALENGTH(firststr) AS VARCAHRFieldSize FROM dbo.StringFunSELECT DATALENGTH(secondstr) AS TEXTFieldSize FROM dbo.StringFun

sqlserver,數(shù)據(jù)類型

此時未報錯誤,結(jié)果顯示為47個字節(jié)大小。 既然LEN對文本無效,我們不對文本操作就是。

SELECT LEN(firststr) AS VARCAHRFieldSize FROM dbo.StringFunSELECT DATALENGTH(secondstr) AS TEXTFieldSize FROM dbo.StringFun

sqlserver,數(shù)據(jù)類型

此時類型為VARCAHR的firststr字節(jié)大小卻為31,為何,看到這里我們想必恍然大悟,在上述我們講到常規(guī)字符會對中文以一個字符兩個字節(jié)大小存儲,但是這里實際上返回的是實際字符大小,當然一個是存儲,一個是檢索,還是有點不同,同時我們也不會將中文存儲到VARCHAR中。到這里我們可以得出結(jié)論。

結(jié)論:DATALENGTH函數(shù)是針對于TEXT,而LEN是針對于VARCHAR,對TEXT無效會報錯。

到這里我們還有一個特殊值未進行處理,那就是NULL。那么問題來了,LEN和DATALENGTH對NULL,它的長度大小是多少呢,是0還是不是0尼?

是我們來測試下:

DECLARE @MyVar VARCHAR(10)SET @MyVar = NULLIF (LEN(@MyVar) = 0)PRINT 'LEN of NULL is 0'ELSEPRINT 'LEN of NULL is NULL'

sqlserver,數(shù)據(jù)類型

我們上述得到的結(jié)果是LEN of NULL is NULL,DATALENGTH就不再演示了。

結(jié)論:LEN和DATALENGTH對于NULL計算的結(jié)果就是NULL。

我們再來看看二者差異的一個小地方:

SELECT LEN('JeffckyWang ') AS 'LEN'SELECT DATALENGTH('JeffckyWang ') AS 'DATALENGTH'

sqlserver,數(shù)據(jù)類型

結(jié)論:LEN會刪除尾隨空格,而DATALENGTH不會

CHARINDEX與PATINDEX比較

CHARINDEX和PATINDEX字符串函數(shù)都是查詢返回指定匹配字符串的開始位置。

我們先查詢一個字符串,此字符串在表中存在,如下:

USE AdventureWorks2012;GOSELECT CHARINDEX('Worn', DocumentSummary) AS 'CHARINDEX'FROM Production.DocumentWHERE ChangeNumber = 55;GOSELECT PATINDEX('Worn', DocumentSummary) AS 'PATINDEX'FROM Production.DocumentWHERE ChangeNumber = 55;

sqlserver,數(shù)據(jù)類型

為何CHARINDEX函數(shù)查找到了,而PATINDEX沒有查詢到呢?此時就說說二者的區(qū)別,二者都有兩個參數(shù),第二個參數(shù)都是要匹配的字符串,但是PATINDEX函數(shù)必須在需要匹配的字符串之前或者之后添加百分號即通配符,而CHARINDEX函數(shù)則不需要。如下即可:

USE AdventureWorks2012;GOSELECT CHARINDEX('Worn', DocumentSummary) AS 'CHARINDEX'FROM Production.DocumentWHERE ChangeNumber = 55;GOSELECT PATINDEX('%Worn%', DocumentSummary) AS 'PATINDEX'FROM Production.DocumentWHERE ChangeNumber = 55;

sqlserver,數(shù)據(jù)類型

結(jié)論:PATINDEX匹配字符串必須在字符串前面或者后面或者前后添加通配符,而CHARINDEX無需添加。

總結(jié)

本節(jié)我們主要講解了SQL中的數(shù)據(jù)類型以及幾個需要注意的地方,簡短的內(nèi)容,深入的理解,我們下節(jié)再會。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,同時也希望多多支持VeVb武林網(wǎng)!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久a爱视频| 国产99在线免费| 久久精品卡一| 日韩理论电影| 精品日产一区2区三区黄免费| 欧美国产视频日韩| 亚洲第一免费看片| 欧美特黄级在线| 日韩av在线播放网址| www日韩在线观看| 成人免费视频观看| 亚洲国产精品视频在线观看| 成人精品美女隐私视频| 亚洲一区二区三区精品中文字幕| 91极品视频在线观看| 日韩午夜免费视频| 日本欧美在线视频免费观看| 性欧美精品一区二区三区在线播放| 中文字幕在线不卡国产视频| 国产亚洲综合精品| 成人黄色av网址| 日本一本在线视频| 九九综合久久| 国产精品成人免费一区久久羞羞| 国内精品国产成人国产三级粉色| 粉嫩嫩av羞羞动漫久久久| 日韩精品久久久久久久电影99爱| 小小的日本在线观看免费色网| www.精选视频.com| 亚洲成人一区在线观看| www.色婷婷| 91人成网站www| v888av成人| 精品电影一区| 欧美视频一区二区三区四区| 99re热精品视频| 成人激情视频| 亚洲美女少妇无套啪啪呻吟| 亚洲白拍色综合图区| 日韩国产一区二区三区| 美国黑人一级大黄| 欧美精品色哟哟| 亚洲天堂一区二区三区| 亚洲图片有声小说| 久久亚洲a v| 欧美大片一区二区| 国产欧美精品一区二区色综合| 成人免费av在线| 欧美18—19sex性hd| 欧美日韩亚洲一区在线观看| 亚州一区二区三区| 制服影音先锋| 91精品免费在线| 久久久久成人精品免费播放动漫| av毛片在线| 青青国产在线观看| av一区和二区| 国产在线拍揄自揄拍视频| 国产乱肥老妇国产一区二| 99re6这里只有精品| 手机在线一区二区三区| 日韩美女视频中文字幕| 在线观看国产精品入口| 97在线视频免费播放| 一区二区小视频| 日韩欧美aⅴ综合网站发布| 欧美一级大胆视频| 国产伦精品一区二区三区四区视频| 91在线播放视频| 亚洲444eee在线观看| 成人同人动漫免费观看| 日操夜操天天操| www.com久久久| 黄色在线观看免费| 欧美精品一区二区不卡| 国产传媒一区二区| 久久久免费毛片| 久久久久久国产精品mv| 人妻精品一区一区三区蜜桃91| 成人精品鲁一区一区二区| 国内精品视频一区| 亚洲综合久久av| 日韩欧美精品三级| 国产精品免费精品自在线观看| 国产精品色婷婷在线观看| 黄色影视在线观看| 欧美日韩国产在线播放网站| 欧美hdxxx| 国产在线一在线二| www.狠狠| 国产精品第二十页| 亚洲国产成人在线观看| 色啦啦av综合| 久热精品免费视频| 色在线观看视频| 国产免费专区| 国产在视频一区二区三区吞精| 国产精品久久久久久久久久直播| 国产农村妇女毛片精品久久麻豆| 国产主播一区二区| 人人干人人看| 国产成人av资源| 激情欧美国产欧美| 国产又粗又硬视频| 国内不卡的一区二区三区中文字幕| 免费观看在线色综合| 免费xxxxx网站中文字幕| 久久噜噜亚洲综合| 日韩一区在线免费观看| 亚洲国产精品av| 精品欧美日韩| 伦理中文字幕亚洲| 欧美三日本三级少妇三99| 国产精品久久久久久久久免费桃花| 丰满少妇高潮一区二区| 大陆极品少妇内射aaaaa| 伊人伊成久久人综合网站| 色吊丝在线永久观看最新版本| 国产亚洲欧洲| 成人乱码一区二区三区av| 天堂网在线观看在线观看精品| 久久这里都是精品| 欧美黑白配在线| 亚洲免费综合| 国内自拍视频一区二区三区| 欧美午夜a级限制福利片| 国产激情久久久久久熟女老人av| 欧美美女18p| 911亚洲精品| 日韩美女在线| 精品视频在线播放一区二区三区| 中文字幕成人精品久久不卡| 永久域名在线精品| 欧美大尺度做爰床戏| 色菇凉天天综合网| 国产小视频在线| 国产精品麻豆免费版现看视频| 日本三级黄色网址| 欧美人与z0zoxxxx特| 欧美在线视频网站| 久久综合婷婷综合| 插吧插吧综合网| 国产成人免费在线观看不卡| 91视频欧美| 97婷婷大伊香蕉精品视频| 国产精品久久精品视| 一色屋精品亚洲香蕉网站| 探花国产精品一区二区| 欧美日韩aaaaaa| 少妇一级黄色片| 在线观看免费视频综合| 国产一区欧美一区| 久久久久久久久久久9不雅视频| t66y最新发布地址| 天天躁日日躁狠狠躁超碰2020| 一个人在线视频免费观看www| 91精品国产高清久久久久久久久| 亚洲调教欧美在线| 男女裸体影院高潮| 伦xxxx在线| 亚洲 小说区 图片区 都市| 2020久久国产精品| 粉嫩久久久久久久极品| 日本一二三区不卡| 今天免费高清在线观看国语| 久久精品波多野结衣| 亚洲成人第一区| 伊人久久久久久久久久久久久| 日日爽夜夜爽| 日韩美女福利视频| 中文字幕av一区二区三区谷原希美| 亚洲男人都懂第一日本| 在线看欧美日韩| 久热国产精品视频| 五月天婷婷丁香| 亚洲另类av| 日韩在线播放av| 欧美一区二区三区人| 精品欧美一区二区三区在线观看| 四虎精品成人a在线观看| 欧美美女在线| 欧美va日韩va| 国产高清视频一区| 亚洲精品乱码久久久久久动漫| 一区二区中文字幕| 国产一区二区三区在线免费观看| 综合成人在线| 盗摄牛牛av影视一区二区| 中文字幕在线观看日| 91国偷自产一区二区开放时间| 国产成人精品亚洲精品色欲| 国产91色在线|| 欧洲美女女同性互添| 国产精品永久久久久久久久久| 亚洲妇熟xx妇色黄蜜桃| 青青久在线视频| 激情婷婷丁香| 国产日韩精品在线播放| 香蕉视频禁止18| 国产不卡精品一区二区三区| 91成人国产在线观看| 日本三级亚洲精品| 四虎影视1304t| 久久精品一区| 老司机午夜免费福利视频| 久久久久成人精品免费播放动漫| 午夜久久久久久久久久影院| y97精品国产97久久久久久| 亚洲国产sm捆绑调教视频| 国产系列第一页| 国产成人精品一区二区三区福利| 国产九一视频| 久久综合久久99| 亚洲二区自拍| 精品国产免费久久久久久婷婷| 久久成人久久爱| 成人免费视频观看视频| www.污污视频| 男人的j进女人的j一区| 任我爽在线视频| 男人的天堂色| 欧美交a欧美精品喷水| 可以免费在线观看的av| www.亚洲资源| 欧美日韩精品一区二区三区视频播放| 日韩精品专区在线影院重磅| 疯狂做受xxxx欧美肥白少妇| 日韩欧美精品在线视频| 紧缚捆绑精品一区二区| 欧美aa视频| 日韩欧美国产精品一区| 爱啪导航一精品导航站| 亚洲一区精品视频在线观看| 精品久久人人做人人爽| 国产永久在线观看| 欧美在线亚洲一区| 51成人做爰www免费看网站| 成**人特级毛片www免费| 日本最新不卡在线| www.4438全国最大| 日韩欧美精品免费| 亚洲精品久久久久久久久久久久| 久久色在线观看| 欧美日韩麻豆| 91精品人妻一区二区三区蜜桃2| 国产特级黄色大片| 国产婷婷色一区二区三区在线| 亚洲天堂中文在线| av一区二区不卡| 天天色 色综合| 人成免费电影一二三区在线观看| 久久久久亚洲精品国产| 国产成人1区| 欧美日韩不卡合集视频| 免费永久在线观看黄网| 中文字幕制服丝袜在线| 久久亚洲图片| 国产成人无码精品久久久性色| 亚洲国产www| 国产精品日日摸夜夜摸av| 欧美午夜电影在线观看| 欧美色国产精品| 国产91国语对白在线| 亚洲精品美国一| 欧美丰满艳妇bbwbbw| 在线观看免费看片| av电影在线播放高清免费观看| 亚洲男人天堂手机在线| 成人淫片免费视频95视频| 欧美精品尤物在线观看| 国产成人一区二区三区影院在线| 亚洲成人免费观看| 亚洲一区二区三区综合| 91九色偷拍| 国产精品一国产精品k频道56| 成人精品在线播放| 91麻豆制片厂| 一区二区三区www污污污网站| 精品人妻互换一区二区三区| 日本成人一区二区三区| 免费一级suv好看的国产网站| 国产精品变态另类虐交| 亚洲理伦在线| 国产无人区一区二区三区| 日韩精品综合一本久道在线视频| 黄色动漫网站入口| 亚洲国产精品一区二区第四页av| 亚洲图片欧洲图片av| 亚洲一卡二卡三卡四卡| 夜夜摸夜夜操| 亚洲精品自产拍在线观看app| 嫩草伊人久久精品少妇av杨幂| 免费看成人a| 久久这里只有精品9| 精品不卡在线| 国产一区深夜福利| 午夜激情久久| 性猛交ⅹxxx富婆video| 人妻久久久一区二区三区| 日韩精品一区二区三区视频播放| 91影院在线免费观看视频| 国产精品xxx在线观看www| 日韩视频一区二区三区在线播放| 欧美精品中文字幕一区| 中文字幕在线天堂| 亚洲精品男同| 日韩免费视频线观看| 99欧美视频| 天堂а√在线官网| 亚洲成人看片| 成人羞羞国产免费网站| 九九热在线观看视频| 成人淫片免费视频95视频| 成人夜晚看av| h在线免费观看| 国产精品免费网站| 日韩一区二区三区不卡| 黑丝一区二区三区| 国产在线精品自拍| 中文字幕在线观看网站| 国产美女明星三级做爰| www.欧美精品一二区| 先锋影音av资源网| 日本一区视频在线观看| 欧美人一级淫片a免费播放| 亚洲欧美日韩综合精品网| av一本久道久久波多野结衣| 日本a在线播放|