CAST 和 CONVERT (SQL Server Compact)

明確地將某資料類型的運算式轉換成另一個運算式。CAST 是 CONVERT 的語法變數。

語法

Syntax for CAST:
CAST ( expression AS data_type [ (length ) ])
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] ,expression [ ,style ] )

引數

  • data_type
    目標系統提供的資料類型為 bigint。但是使用者定義的資料類型無法使用。如需有關可用資料類型的詳細資訊,請參閱<資料類型>。

  • Length
    nchar、nvarchar、char、varchar、binary 或 varbinary 資料類型的選擇性參數。

  • Expression
    任何有效的 SQL Server Compact 運算式。如需詳細資訊,請參閱<運算式 (SQL Server Compact)>。

  • Style
    用來將 datetime 或 smalldatetime 資料轉換成字元資料 (nchar、nvarchar、char、varchar、nchar 或 nvarchar 資料類型) 的日期格式樣式,或者是當您要將 float、 real、money 或 smallmoney 資料轉換成字元資料 (nchar、nvarchar、 char、varchar、nchar 或 nvarchar 資料類型) 時所使用的字串格式。如果 style是 NULL,則傳回的結果也是 NULL。

    如需詳細資訊,請參閱此主題稍後的「備註」一節。

備註

SQL Server Compact 支援阿拉伯文樣式的日期格式,並使用科威特演算法。

以下資料表最左邊的兩個資料行代表要將 datetime 或 smalldatetime 轉換成字元資料時所使用的 style 值。將 style 的值加上 100,可得出含有世紀 (yyyy) 的四位數年份。

沒有標示世紀 (yy)

有標示世紀 (yyyy)

標準

輸入/輸出**

-

0 或 100 (*)

預設

mon dd yyyy hh:mi AM (或 PM)

1

101

美國

mm/dd/yyyy

2

102

ANSI

yy.mm.dd

3

103

英國/法國

dd/mm/yy

4

104

德國

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 (*)

預設值 + 毫秒

mon dd yyyy hh:mi:ss:mmm AM (或 PM)

10

110

美國

mm-dd-yy

11

111

日本

yy/mm/dd

12

112

ISO

Yymmdd

-

13 或 113 (*)

歐洲預設值 + 毫秒

dd mon yyyy hh:mm:ss:mmm (24h)

14

114

-

hh:mi:ss:mmm (24h)

-

20 或 120 (*)

ODBC 標準

yyyy-mm-dd hh:mi:ss (24h)

-

21 或 121 (*)

ODBC 標準 (含有毫秒)

yyyy-mm-dd hh:mi:ss.mmm (24h)

-

126(***)

ISO8601

yyyy-mm-ddThh:mm:ss.mmm (沒有空格)

-

130*

Hijri****

dd mon yyyy hh:mi:ss:mmm AM

-

131*

Hijri****

dd/mm/yy hh:mi:ss:mmm AM

* 預設值 (style 0 或 100、9 或 109、13 或 113、20 或 120 以及 21 或 121) 一定會傳回世紀 (yyyy)。

** 當您轉換成 datetime 的輸入資料。當您轉換成字元資料時的輸出資料。

*** 專為 XML 使用的設計。將 datetime 或 smalldatetime 轉換成 character 資料時,其輸出格式如以下資料表所示。從 float、money 或 smallmoney 轉換成 character 資料時,其輸出相當於 style 2。從 real 轉換成 character 資料時,其輸出相當於 style 1。

****Hijri 是一個擁有多種變化的日曆系統,SQL Server Compact 採用的是科威特演算法。

以下資料表顯示要將 float 或 real 轉換成字元資料時所使用的 style 值。

輸出

0 (預設值)

最長可為 6 位數字。必要時請使用科學標記法。

1

固定為 8 位數字。總是使用科學標記法。

2

總是為 16 位數字。總是使用科學標記法。

以下資料表內最左邊的資料行代表要將 money 或 smallmoney 轉換成字元資料時所使用的 style 值。

輸出

0 (預設值)

小數點左方沒有逗號,小數點右方可以有 2 位數字。範例:4235.98.

1

小數點左方每隔 3 位數就有一個逗號,小數點右方則有 2 位數字。範例:3,510.92.

2

小數點左方沒有逗號,小數點右方可以有 4 位數字。範例:4235.9819.

當您要將 numeric 或 decimal 資料轉換成字元資料時,使用 style 128,便可將結果集尾端的零全部去除。

重要

針對 nchar、nvarchar、binary 和 varbinary 使用 CAST 或 CONVERT 時,SQL Server 會將值截斷至 30 個字元的上限。SQL Server Compact 允許 nchar 和 nvarchar 使用 4000,而 binary 和 varbinary 使用 8000。因此,查詢 SQL Server 和 SQL Server Compact 所產生的結果便有所不同。在 nchar(200)、nvarchar(200)、binary(400) 和 varbinary(400) 等指定了資料類型大小的情況中,SQL Server 和 SQL Server Compact 之間的結果是一致的。

下圖說明 SQL Server Compact 中明確與隱含的資料轉換。

明確及隱含模式的資料轉換

範例

以下範例將 datetime 值轉換成 nvarchar 值。

SELECT OrderDate, CONVERT(nvarchar(10), OrderDate, 101)
FROM Orders

Cast 會將某資料類型的運算式轉換成另一個運算式。在下列範例中,轉換的結果是 10。

SELECT CAST(10.6496 AS int)

進行資料轉換時,如果目標資料類型的小數位數少於來源資料類型,此值就會四捨五入。例如,下列轉換的結果是 $10.3497。

SELECT CAST(10.3496847 AS money)