中文字幕天天躁日日躁狠狠躁,最近中文字幕大全免费版在线,最近2019免费中文字幕视频三,亚洲精品无码你懂的,亚洲国产精品成人精品小说

  • 相關(guān)軟件
    >CAST 和 CONVERT 創(chuàng)建者:webmaster 更新時間:2006-02-16 15:51

    將某種數(shù)據(jù)類型的表達式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CAST 和 CONVERT 提供相似的功能。



    語法


    使用 CAST:



    CAST ( expression AS data_type )



    使用 CONVERT:



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



    參數(shù)


    expression



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



    data_type



    目標系統(tǒng)所提供的數(shù)據(jù)類型,包括 bigintsql_variant。不能使用用戶定義的數(shù)據(jù)類型。有關(guān)可用的數(shù)據(jù)類型的更多信息,請參見數(shù)據(jù)類型。



    length



    ncharnvarchar、charvarchar、binaryvarbinary 數(shù)據(jù)類型的可選參數(shù)。



    style



    日期格式樣式,借以將 datetimesmalldatetime 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、char、varchar、ncharnvarchar 數(shù)據(jù)類型);或者字符串格式樣式,借以將 float、realmoneysmallmoney 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)(nchar、nvarchar、charvarchar、ncharnvarchar 數(shù)據(jù)類型)。



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



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























































































































































    不帶世紀數(shù)位 (yy)帶世紀數(shù)位 (yyyy)

    標準


    輸入/輸出**
    -0 或 100 (*) 默認值mon dd yyyy hh:miAM(或 PM)
    1101美國mm/dd/yyyy
    2102ANSIyy.mm.dd
    3103英國/法國dd/mm/yy
    4104德國dd.mm.yy
    5105意大利dd-mm-yy
    6106-dd mon yy
    7107-mon dd, yy
    8108-hh:mm:ss
    -9 或 109 (*) 默認值 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)
    10110美國mm-dd-yy
    11111日本yy/mm/dd
    12112ISOyymmdd
    -13 或 113 (*) 歐洲默認值 + 毫秒dd mon yyyy hh:mm:ss:mmm(24h)
    14114-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(***)ISO8601yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
    -130*科威特dd mon yyyy hh:mi:ss:mmmAM
    -131*科威特dd/mm/yy hh:mi:ss:mmmAM



    *    默認值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始終返回世紀數(shù)位 (yyyy)。

    ** 當轉(zhuǎn)換為 datetime 時輸入;當轉(zhuǎn)換為字符數(shù)據(jù)時輸出。

    *** 專門用于 XML。對于從 datetimesmalldatetimecharacter 數(shù)據(jù)的轉(zhuǎn)換,輸出格式如表中所示。對于從 float、moneysmallmoneycharacter 數(shù)據(jù)的轉(zhuǎn)換,輸出等同于 style 2。對于從 realcharacter 數(shù)據(jù)的轉(zhuǎn)換,輸出等同于 style 1。



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



    當從 smalldatetime 轉(zhuǎn)換為字符數(shù)據(jù)時,包含秒或毫秒的樣式將在這些位置上顯示零。當從 datetimesmalldatetime 值進行轉(zhuǎn)換時,可以通過使用適當?shù)?charvarchar 數(shù)據(jù)類型長度來截斷不需要的日期部分。



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
























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



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
























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



    返回類型


    返回與 data type 0 相同的值。



    注釋


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





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



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



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



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



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


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



    將字符或二進制表達式(char、ncharnvarchar、varcharbinary varbinary)轉(zhuǎn)換為不同數(shù)據(jù)類型的表達式時,數(shù)據(jù)可能會被截斷,只顯示一部分,或者因為結(jié)果太短無法顯示而返回錯誤。除下表中所顯示的轉(zhuǎn)換外,轉(zhuǎn)換為 char、varchar、ncharnvarchar、binaryvarbinary 時將被截斷。


























































    被轉(zhuǎn)換的數(shù)據(jù)類型轉(zhuǎn)換為的數(shù)據(jù)類型結(jié)果
    intsmallint tinyintchar*
     varchar*
     ncharE
     nvarcharE
    money、smallmoneynumeric、decimal、floatrealcharE
     varcharE
     ncharE
     nvarcharE



    * 結(jié)果長度太短而無法顯示。

    E 因為結(jié)果長度太短無法顯示而返回錯誤。



    Microsoft SQL Server 僅保證往返轉(zhuǎn)換(即,從原始數(shù)據(jù)類型進行轉(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ù)字數(shù)據(jù)類型分類的數(shù)據(jù)類型。SQL Server 并不保證 decimal numeric 數(shù)據(jù)類型轉(zhuǎn)換為 binary 的結(jié)果在 SQL Server 各版本間相同。



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



    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)


    當具有不同小數(shù)位數(shù)的數(shù)據(jù)類型進行轉(zhuǎn)換時,值將被截斷為最精確的數(shù)位。例如,SELECT CAST(10.6496 AS int) 的結(jié)果為 10。



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



    當將非數(shù)字類型的 char、nchar、varcharnvarchar 數(shù)據(jù)轉(zhuǎn)換為 intfloat、numeric decimal 時,SQL Server 將返回錯誤信息。當將空字符串 (" ") 轉(zhuǎn)換為 numeric decimal 時,SQL Server 也將返回錯誤信息。



    使用二進制字符串數(shù)據(jù)


    binary varbinary 數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)并且在 x 后面指定了奇數(shù)位的值時,SQL Server 在 x 后面添加 0(零)以成為偶數(shù)位值。



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



    當指定 binary 數(shù)據(jù)類型的長度時,每兩個字符被算作是一個單位長度。長度 10 表示將輸入 10 個雙字符組。



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



    示例


    A. 同時使用 CAST 和 CONVERT


    每個示例都將檢索書名(這些圖書的截止當前銷售額的第一位數(shù)字為 3),并將這些圖書的 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ù)運算符的 CAST


    下面的示例通過將總的截止當前銷售額 (ytd_sales) 與每本圖書的價格 (price) 相除,進行單獨列計算 (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 進行串聯(lián)


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



    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)
    相關(guān)文章
    本頁查看次數(shù):