国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL CAST與CONVERT區(qū)別[轉(zhuǎn)]

admin
2010年8月18日 1:17 本文熱度 4237
CAST 和 CONVERT
將某種數(shù)據(jù)類型的表達(dá)式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CAST 和 CONVERT 提供相似的功能。

語(yǔ)法
使用 CAST:

CAST ( expression AS data_type )

使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])

參數(shù)
expression

是任何有效的 Microsoft® SQL Server™ 表達(dá)式。有關(guān)更多信息,請(qǐng)參見(jiàn)表達(dá)式。

data_type

目標(biāo)系統(tǒng)所提供的數(shù)據(jù)類型,包括 bigint 和 sql_variant。不能使用用戶定義的數(shù)據(jù)類型。有關(guān)可用的數(shù)據(jù)類型的更多信息,請(qǐng)參見(jiàn)數(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ù)類型);或者字符串格式樣式,借以將 float、real、money 或 smallmoney 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數(shù)據(jù)類型)。

SQL Server 支持使用科威特算法的阿拉伯樣式中的數(shù)據(jù)格式。

在表中,左側(cè)的兩列表示將 datetime 或 smalldatetime 轉(zhuǎn)換為字符數(shù)據(jù)的 style 值。給 style 值加 100,可獲得包括世紀(jì)數(shù)位的四位年份 (yyyy)。

不帶世紀(jì)數(shù)位 (yy) 帶世紀(jì)數(shù)位 (yyyy)
標(biāo)準(zhǔn)
輸入/輸出**
- 0 或 100 (*) 默認(rèn)值 mon dd yyyy hh:miAM(或 PM)
1 101 美國(guó) mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英國(guó)/法國(guó) dd/mm/yy
4 104 德國(guó) dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默認(rèn)值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美國(guó) mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 歐洲默認(rèn)值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 規(guī)范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 規(guī)范(帶毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM


*     默認(rèn)值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始終返回世紀(jì)數(shù)位 (yyyy)。
** 當(dāng)轉(zhuǎn)換為 datetime 時(shí)輸入;當(dāng)轉(zhuǎn)換為字符數(shù)據(jù)時(shí)輸出。
*** 專門用于 XML。對(duì)于從 datetime 或 smalldatetime 到 character 數(shù)據(jù)的轉(zhuǎn)換,輸出格式如表中所示。對(duì)于從 float、money 或 smallmoney 到 character 數(shù)據(jù)的轉(zhuǎn)換,輸出等同于 style 2。對(duì)于從 real 到 character 數(shù)據(jù)的轉(zhuǎn)換,輸出等同于 style 1。



重要   默認(rèn)情況下,SQL Server 根據(jù)截止年份 2049 解釋兩位數(shù)字的年份。即,兩位數(shù)字的年份 49 被解釋為 2049,而兩位數(shù)字的年份 50 被解釋為 1950。許多客戶端應(yīng)用程序(例如那些基于 OLE 自動(dòng)化對(duì)象的客戶端應(yīng)用程序)都使用 2030 作為截止年份。SQL Server 提供一個(gè)配置選項(xiàng)("兩位數(shù)字的截止年份"),借以更改 SQL Server 所使用的截止年份并對(duì)日期進(jìn)行一致性處理。然而最安全的辦法是指定四位數(shù)字年份。


當(dāng)從 smalldatetime 轉(zhuǎn)換為字符數(shù)據(jù)時(shí),包含秒或毫秒的樣式將在這些位置上顯示零。當(dāng)從 datetime 或 smalldatetime 值進(jìn)行轉(zhuǎn)換時(shí),可以通過(guò)使用適當(dāng)?shù)?char 或 varchar 數(shù)據(jù)類型長(zhǎng)度來(lái)截?cái)嗖恍枰娜掌诓糠帧?

下表顯示了從 float 或 real 轉(zhuǎn)換為字符數(shù)據(jù)時(shí)的 style 值。

值 輸出
0(默認(rèn)值) 最大為 6 位數(shù)。根據(jù)需要使用科學(xué)記數(shù)法。
1 始終為 8 位值。始終使用科學(xué)記數(shù)法。
2 始終為 16 位值。始終使用科學(xué)記數(shù)法。


在下表中,左列表示從 money 或 smallmoney 轉(zhuǎn)換為字符數(shù)據(jù)時(shí)的 style 值。

值 輸出
0(默認(rèn)值) 小數(shù)點(diǎn)左側(cè)每三位數(shù)字之間不以逗號(hào)分隔,小數(shù)點(diǎn)右側(cè)取兩位數(shù),例如 4235.98。
1 小數(shù)點(diǎn)左側(cè)每三位數(shù)字之間以逗號(hào)分隔,小數(shù)點(diǎn)右側(cè)取兩位數(shù),例如 3,510.92。
2 小數(shù)點(diǎn)左側(cè)每三位數(shù)字之間不以逗號(hào)分隔,小數(shù)點(diǎn)右側(cè)取四位數(shù),例如 4235.9819。


返回類型
返回與 data type 0 相同的值。

注釋
隱性轉(zhuǎn)換指那些沒(méi)有指定 CAST 或 CONVERT 函數(shù)的轉(zhuǎn)換。而顯式轉(zhuǎn)換指那些已指定了所需 CAST (CONVERT) 函數(shù)的轉(zhuǎn)換。下面的圖表顯示了所有可用于 SQL Server 系統(tǒng)提供的數(shù)據(jù)類型的顯式和隱性轉(zhuǎn)換,這些數(shù)據(jù)類型包括 bigint 和 sql_variant。





說(shuō)明   因?yàn)?Unicode 數(shù)據(jù)始終使用偶數(shù)位字節(jié),所以當(dāng)在 binary 或 varbinary 數(shù)據(jù)類型與 Unicode 所支持的數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換時(shí)會(huì)使用提示。例如,此轉(zhuǎn)換不返回 41 的十六進(jìn)制值,而是返回 4100 的十六進(jìn)制值:SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary)


不支持 text 和 image 數(shù)據(jù)類型的自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換??梢詫?text 數(shù)據(jù)顯式轉(zhuǎn)換為字符數(shù)據(jù),將 image 數(shù)據(jù)顯性轉(zhuǎn)換為 binary 或 varbinary 數(shù)據(jù),但是最大長(zhǎng)度為 8000。如果嘗試進(jìn)行不正確的轉(zhuǎn)換(例如,將包含字母的字符表達(dá)式轉(zhuǎn)換為 int),則 SQL Server 會(huì)產(chǎn)生錯(cuò)誤信息。

當(dāng) CAST 或 CONVERT 的輸出是字符串并且輸入也是字符串時(shí),輸出與輸入具有相同的排序規(guī)則和排序規(guī)則標(biāo)簽。如果輸入不是字符串,則輸出采用數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則及強(qiáng)制默認(rèn)的排序規(guī)則標(biāo)簽。有關(guān)更多信息,請(qǐng)參見(jiàn)排序規(guī)則的優(yōu)先順序。

若要給輸出指派不同的排序規(guī)則,請(qǐng)將 COLLATE 子句應(yīng)用到 CAST 或 CONVERT 函數(shù)的結(jié)果表達(dá)式中。例如:

SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

不存在有關(guān)賦值的從 sql_variant 數(shù)據(jù)類型進(jìn)行的隱性轉(zhuǎn)換,但是存在轉(zhuǎn)換為 sql_variant 的隱性轉(zhuǎn)換。

將字符或二進(jìn)制表達(dá)式(char、nchar、nvarchar、varchar、binary 或 varbinary)轉(zhuǎn)換為不同數(shù)據(jù)類型的表達(dá)式時(shí),數(shù)據(jù)可能會(huì)被截?cái)?,只顯示一部分,或者因?yàn)榻Y(jié)果太短無(wú)法顯示而返回錯(cuò)誤。除下表中所顯示的轉(zhuǎn)換外,轉(zhuǎn)換為 char、varchar、nchar、nvarchar、binary 和 varbinary 時(shí)將被截?cái)唷?

被轉(zhuǎn)換的數(shù)據(jù)類型 轉(zhuǎn)換為的數(shù)據(jù)類型 結(jié)果
int、smallint 或 tinyint char *
varchar *
nchar E
nvarchar E
money、smallmoney、numeric、decimal、float 或 real char E
varchar E
nchar E
nvarchar E


* 結(jié)果長(zhǎng)度太短而無(wú)法顯示。
E 因?yàn)榻Y(jié)果長(zhǎng)度太短無(wú)法顯示而返回錯(cuò)誤。

Microsoft SQL Server 僅保證往返轉(zhuǎn)換(即,從原始數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換后又返回原始數(shù)據(jù)類型)在各版本間產(chǎn)生相同值。下面的示例顯示往返轉(zhuǎn)換:

DECLARE @myval decimal (5, 2)
SET @myval = 193.57
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5))
-- Or, using CONVERT
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval))

例如,不要嘗試構(gòu)造 binary 值并將它們轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)類型分類的數(shù)據(jù)類型。SQL Server 并不保證 decimal 或 numeric 數(shù)據(jù)類型轉(zhuǎn)換為 binary 的結(jié)果在 SQL Server 各版本間相同。

下面的示例顯示了由于太短而無(wú)法顯示的結(jié)果表達(dá)式。

USE pubs
SELECT SUBSTRING(title, 1, 25) AS Title, CAST(ytd_sales AS char(2))
FROM titles
WHERE type = 'trad_cook'

下面是結(jié)果集:

Title                       
------------------------- --
Onions, Leeks, and Garlic *
Fifty Years in Buckingham *
Sushi, Anyone?            *

(3 row(s) affected)

當(dāng)具有不同小數(shù)位數(shù)的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換時(shí),值將被截?cái)酁樽罹_的數(shù)位。例如,SELECT CAST(10.6496 AS int) 的結(jié)果為 10。

轉(zhuǎn)換時(shí),若目標(biāo)數(shù)據(jù)類型的小數(shù)位數(shù)小于源數(shù)據(jù)類型的小數(shù)位數(shù),則要轉(zhuǎn)換的值將被四舍五入。例如,CAST(10.3496847 AS money) 的結(jié)果是 $10.3497。

當(dāng)將非數(shù)字類型的 char、nchar、varchar 或 nvarchar 數(shù)據(jù)轉(zhuǎn)換為 int、float、numeric 或 decimal 時(shí),SQL Server 將返回錯(cuò)誤信息。當(dāng)將空字符串 (" ") 轉(zhuǎn)換為 numeric 或 decimal 時(shí),SQL Server 也將返回錯(cuò)誤信息。

使用二進(jìn)制字符串?dāng)?shù)據(jù)
當(dāng) binary 或 varbinary 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)并且在 x 后面指定了奇數(shù)位的值時(shí),SQL Server 在 x 后面添加 0(零)以成為偶數(shù)位值。

二進(jìn)制數(shù)據(jù)包含從 0 到 9 和從 A 到 F(或從 a 到 f)的字符,每?jī)蓚€(gè)字符為一組。二進(jìn)制字符串必須以 0x 開(kāi)頭。例如,若要輸入 FF,請(qǐng)鍵入 0xFF。最大值是一個(gè) 8000 字節(jié)的二進(jìn)制值,每個(gè)字節(jié)的最大值都是 FF。Binary 數(shù)據(jù)類型不能用于十六進(jìn)制數(shù)據(jù),而是用于位模式。對(duì)于存儲(chǔ)為二進(jìn)制數(shù)據(jù)的十六進(jìn)制數(shù)字的轉(zhuǎn)換和計(jì)算結(jié)果,無(wú)法保證其準(zhǔn)確性。

當(dāng)指定 binary 數(shù)據(jù)類型的長(zhǎng)度時(shí),每?jī)蓚€(gè)字符被算作是一個(gè)單位長(zhǎng)度。長(zhǎng)度 10 表示將輸入 10 個(gè)雙字符組。

由 0x 表示的空二進(jìn)制字符串可以儲(chǔ)存為二進(jìn)制數(shù)據(jù)。

示例
A. 同時(shí)使用 CAST 和 CONVERT
每個(gè)示例都將檢索書(shū)名(這些圖書(shū)的截止當(dāng)前銷售額的第一位數(shù)字為 3),并將這些圖書(shū)的 ytd_sales 轉(zhuǎn)換為 char(20)。

-- Use CAST.
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '3%'
GO

-- Use CONVERT.
USE pubs
GO
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CONVERT(char(20), ytd_sales) LIKE '3%'
GO

下面是任一查詢的結(jié)果集:

Title                          ytd_sales  
------------------------------ -----------
Cooking with Computers: Surrep 3876       
Computer Phobic AND Non-Phobic 375        
Emotional Security: A New Algo 3336       
Onions, Leeks, and Garlic: Coo 375        

(4 row(s) affected)

B. 使用帶有算術(shù)運(yùn)算符的 CAST
下面的示例通過(guò)將總的截止當(dāng)前銷售額 (ytd_sales) 與每本圖書(shū)的價(jià)格 (price) 相除,進(jìn)行單獨(dú)列計(jì)算 (Copies)。在四舍五入到最接近的整數(shù)后,此結(jié)果將轉(zhuǎn)換為 int 數(shù)據(jù)類型。

USE pubs
GO
SELECT CAST(ROUND(ytd_sales/price, 0) AS int) AS 'Copies'
FROM titles
GO

下面是結(jié)果集:

Copies     
------
205        
324        
6262       
205        
102        
7440       
NULL       
383        
205        
NULL       
17         
187        
16         
204        
418        
18         
1263       
273        

(18 row(s) affected)

C. 使用 CAST 進(jìn)行串聯(lián)
下面的示例使用 CAST 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)來(lái)串聯(lián)非字符、非二進(jìn)制表達(dá)式。

USE pubs
GO
SELECT 'The price is ' + CAST(price AS varchar(12))
FROM titles
WHERE price > 10.00
GO

下面是結(jié)果集:

------------------
The price is 19.99       
The price is 11.95       
The price is 19.99       
The price is 19.99       
The price is 22.95       
The price is 20.00       
The price is 21.59       
The price is 10.95       
The price is 19.99       
The price is 20.95       
The price is 11.95       
The price is 14.99       

(12 row(s) affected)

D. 使用 CAST 獲得更多易讀文本
下面的示例在選擇列表中使用 CAST 將 title 列轉(zhuǎn)換為 char(50) 列,這樣結(jié)果將更加易讀。

USE pubs
GO
SELECT CAST(title AS char(50)), ytd_sales
FROM titles
WHERE type = 'trad_cook'
GO

下面是結(jié)果集:

                                                       ytd_sales
--------------------------------------------------     ---------
Onions, Leeks, and Garlic: Cooking Secrets of the      375
Fifty Years in Buckingham Palace Kitchens              15096
Sushi, Anyone?                                         4095

(3 row(s) affected)

E. 使用帶有 LIKE 子句的 CAST
下面的示例將 int 列(ytd_sales 列)轉(zhuǎn)換為 char(20) 列,以便使用 LIKE 子句。

USE pubs
GO
SELECT title, ytd_sales
FROM titles
WHERE CAST(ytd_sales AS char(20)) LIKE '15%'
   AND type = 'trad_cook'
GO
下面是結(jié)果集:

title                                                        ytd_sales  
------------------------------------------------------------ -----------
Fifty Years in Buckingham Palace Kitchens                    15096      

(1 row(s) affected)

該文章在 2010/8/18 1:17:43 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 色欲久久久久久综合网综合网 | 四虎影视精品永久在线观看 | 无码成人精品区在线观看 | 中文字幕av久久一区二区 | 亚洲一区二区三区偷拍女厕 | 日韩综合在线观看 | 国产精品va尤物在线观看 | 午夜精品区一区二区三 | 精品国产一区二区三区高清观看 | 亚洲欧洲日产无码av网站 | 国产成人99久久亚洲综合精品神马影院手机在线 | 国产精品一区二区 尿失禁 国产精品一区二区AV97 | 美女大战精子推荐美女肛门电视播放免费图片介绍优质 | 国产精成a品人v在线播放 | 中文字幕久久人妻无码人妻出 | 久久综合亚洲一区二区三区 | 自拍偷自拍亚洲精品情侣 | 国产无码精品久久 | 国产白丝无码视频在线观看 | 无码av动漫免费播放不卡无码 | 国产网红无码精品视频 | 91tv在线播放| 日韩精品岛国欧美一区二区 | 自拍偷拍欧美激情 | 一级毛片一级毛片免费毛片 | 最新欧美精品一区二区 | aⅴ毛片a片麻豆 | 亚洲AV福利天堂一区二区三 | 国产成人精品一区二区三区视 | 色噜噜噜AV亚洲男人的天堂 | 野外三级国产在线观看 | 一卡久久4卡5卡6卡7卡 | 一本色道久久88精品综合 | 亚洲尺码电影av久久 | 国产成人无码aⅴ片在线观看 | 国产麻传媒精品国产av | 精品无码专区久久久水蜜桃 | 成人免费的性色视频网站 | 欧美日韩国产中文精品字 | 国产办公室无码视频在线观看 | 日韩欧美群交p内射捆绑 |