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)