SQL Server格式轉(zhuǎn)換函數(shù)Cast、Convert介紹
CAST、CONVERT都可以執(zhí)行數(shù)據(jù)類型轉(zhuǎn)換。在大部分情況下,兩者執(zhí)行同樣的功能,不同的是CONVERT還提供一些特別的日期格式轉(zhuǎn)換,而CAST沒(méi)有這個(gè)功能。
CAST是ANSI兼容的,推薦使用CONVERT。
一、語(yǔ)法
CONVERT (data_type [ ( length ) ] , expression [ , style ]) CAST (expression AS data_type [ (length ) ])
- data_type:目標(biāo)系統(tǒng)所提供的數(shù)據(jù)類型,包括 bigint 和 sql_variant。不能使用用戶定義的數(shù)據(jù)類型。
- length:nchar、nvarchar、char、varchar、binary 或 varbinary 數(shù)據(jù)類型的可選參數(shù)。
- style:
- 日期格式樣式,借以將 datetime 或 smalldatetime 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數(shù)據(jù)類型);
- 數(shù)字格式樣式,借以將 float、real、money 或 smallmoney 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數(shù)據(jù)類型)。
二、示例
SELECT 'AB' + 1 --此語(yǔ)句報(bào)錯(cuò),在將 varchar 值 'AB' 轉(zhuǎn)換成數(shù)據(jù)類型 int 時(shí)失敗。 SELECT 'AB' + CONVERT(varchar,1) --輸出 AB1 SELECT CONVERT(decimal(10,5), 12.3) --輸出12.30000 SELECT 'AB' + CAST(1 AS varchar) --輸出 AB1
CAST和CONVERT都能轉(zhuǎn)換日期:
SELECT CONVERT(DateTime,'2011-07-11') --輸出 2011-07-11 00:00:00.000
SELECT CAST('2011-07-11' AS DateTime) --輸出 2011-07-11 00:00:00.000CONVERT有更多的樣式可選:
SELECT CONVERT(varchar,GETDATE(),5) --輸出 01-07-13 SELECT CONVERT(varchar,GETDATE(),111) --輸出 2013/07/01 SELECT CONVERT(varchar,GETDATE(),1) --輸出 07/01/13 SELECT CAST(GETDATE() AS varchar) --輸出 07 1 2013 9:56PM
三、轉(zhuǎn)化為日期和時(shí)間字符串樣式
SELECT CONVERT(varchar,GETDATE(),102) --輸出 2020.11.24 SELECT CONVERT(varchar,GETDATE(),111) --輸出 2020/11/24 SELECT CONVERT(varchar,GETDATE(),120) --輸出 2020-11-24 09:29:55 SELECT CONVERT(varchar,GETDATE(),108) --輸出 09:29:55
在表中,左側(cè)的兩列表示將datetime或smalldatetime轉(zhuǎn)換為字符數(shù)據(jù)的style值。給style值加 100,可獲得包括世紀(jì)數(shù)位的四位年份 (yyyy)。
* 默認(rèn)值(style0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始終返回世紀(jì)數(shù)位 (yyyy)。

四、轉(zhuǎn)化為XML
對(duì)于 xml 表達(dá)式,style 可能具有下表顯示的值之一 。 其他值作為 0 進(jìn)行處理。
- 0 (默認(rèn)值):使用默認(rèn)的分析行為,即放棄無(wú)用的空格,且不允許使用內(nèi)部 DTD 子集。
注意: 轉(zhuǎn)換為 xml 數(shù)據(jù)類型時(shí),SQL Server 的無(wú)用空格處理方式不同于 XML 1.0。 有關(guān)詳細(xì)信息,請(qǐng)參閱創(chuàng)建 XML 數(shù)據(jù)的實(shí)例。 - 1:保留無(wú)用空格。 此樣式設(shè)置將默認(rèn) xml:space 處理設(shè)置為匹配 xml:space="preserve" 的行為 。
- 2:啟用有限的內(nèi)部 DTD 子集處理。
如果啟用,則服務(wù)器可使用內(nèi)部 DTD 子集提供的以下信息來(lái)執(zhí)行非驗(yàn)證分析操作。
- 應(yīng)用屬性的默認(rèn)值
- 解析并展開(kāi)內(nèi)部實(shí)體引用
- 檢查 DTD 內(nèi)容模型來(lái)確定語(yǔ)法的正確性
分析器忽略外部 DTD 子集。 此外,它不會(huì)評(píng)估 XML 聲明來(lái)查看 standalone 屬性具有 yes 值還是 no 值 。 相反,它將 XML 實(shí)例解析為獨(dú)立文檔。 - 3:保留無(wú)用空格,并啟用有限的內(nèi)部 DTD 子集處理。
示例
說(shuō)明如何通過(guò) XML 數(shù)據(jù)類型和列 (SQL Server) 使用 CONVERT 將數(shù)據(jù)轉(zhuǎn)換為類型化的 XML。
1、此示例將包含空格、文本和標(biāo)記的字符串轉(zhuǎn)換為類型化的 XML,并刪除所有無(wú)用空格(節(jié)點(diǎn)之間的邊界空格):
SELECT CONVERT(XML, '<root><child/></root>')
2、此示例將包含空格、文本和標(biāo)記的類似字符串轉(zhuǎn)換為類型化的 XML,并保留無(wú)用空格(節(jié)點(diǎn)之間的邊界空格):
SELECT CONVERT(XML, '<root> <child/> </root>', 1)
3、此示例將包含空格、文本和標(biāo)記的字符串轉(zhuǎn)換為類型化的 XML:
SELECT CAST('<Name><FName>Carol</FName><LName>Elliot</LName></Name>' AS XML) 有關(guān)更多示例,請(qǐng)參閱創(chuàng)建 XML 數(shù)據(jù)的實(shí)例。
到此這篇關(guān)于SQL Server格式轉(zhuǎn)換函數(shù)Cast、Convert的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SQL中WHERE變量IS NULL條件導(dǎo)致全表掃描問(wèn)題的解決方法
今天在評(píng)審接手的項(xiàng)目中的存儲(chǔ)過(guò)程時(shí),發(fā)現(xiàn)存在大量的在條件里判斷變量是否NULL的寫法2013-09-09
詳解安裝sql2012出現(xiàn)錯(cuò)誤could not open key...解決辦法
這篇文章主要介紹了詳解安裝sql2012出現(xiàn)錯(cuò)誤could not open key...解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
SQL語(yǔ)句技巧:按月統(tǒng)計(jì)數(shù)據(jù)
SQL語(yǔ)句技巧:按月統(tǒng)計(jì)數(shù)據(jù)...2006-08-08
SQL Server數(shù)據(jù)庫(kù)的修復(fù)SQL語(yǔ)句
使用數(shù)據(jù)庫(kù)的過(guò)程中,由于斷電或其他原因,有可能導(dǎo)致數(shù)據(jù)庫(kù)出現(xiàn)一些小錯(cuò)誤,比如檢索某些表特別慢,查詢不到符合條件的數(shù)據(jù)等。2008-11-11
解決在window下執(zhí)行SQLSERVER定時(shí)備份的問(wèn)題
這篇文章主要介紹了在window下執(zhí)行SQLSERVER的定時(shí)備份,文末給大家介紹了windows任務(wù)計(jì)劃定時(shí)備份sqlserver數(shù)據(jù)庫(kù)的相關(guān)知識(shí),使用windows的任務(wù)計(jì)劃新建一個(gè)sqlserver數(shù)據(jù)庫(kù)的定時(shí)備份任務(wù),需要的朋友可以參考下2022-01-01
sqlserver 合并列數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了sqlserver 合并列數(shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
SQLServer 數(shù)據(jù)導(dǎo)入導(dǎo)出的幾種方法小結(jié)
在涉及到SQL Server編程或是管理時(shí)一定會(huì)用到數(shù)據(jù)的導(dǎo)入與導(dǎo)出, 導(dǎo)入導(dǎo)出的方法有多種,結(jié)合我在做項(xiàng)目時(shí)的經(jīng)歷做一下匯總2010-06-06
關(guān)于SQL 存儲(chǔ)過(guò)程入門基礎(chǔ)(基礎(chǔ)知識(shí))
本篇文章,小編將為大家介紹關(guān)于SQL 存儲(chǔ)過(guò)程入門基礎(chǔ)(基礎(chǔ)知識(shí)),有需要的朋友可以參考一下2013-04-04

