CAST 和 CONVERT 用法

来源:互联网 发布:java文件读写代码 编辑:程序博客网 时间:2024/04/26 14:23

CAST CONVERT (Transact-SQL)

将一种数据类型的表达式转换为另一种数据类型的表达式。

【语法】

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

【参数说明】

expression 任何有效的表达式。

data_type 目标数据类型。这包括 xmlbigint sql_variant。不能使用别名数据类型。

length 指定目标数据类型长度的可选整数。默认值为 30

style 指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。

【返回值】

返回转换为 data_type expression

【样式(style)】

Date Time 样式

如果 expression date time 数据类型,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。

不带世纪数位 (yy) (1)

带世纪数位 (yyyy)

标准

输入/输出 (3)

-

0 100 (1, 2)

默认

mon dd yyyy hh:miAM(或 PM

1

101

美国

mm/dd/yyyy

2

102

ANSI

yy.mm.dd

3

103

英国/法国

dd/mm/yyyy

4

104

德国

dd.mm.yy

5

105

意大利

dd-mm-yy

6

106 (1)

-

dd mon yy

7

107 (1)

-

mon dd, yy

8

108

-

hh:mi:ss

-

9 109 (1, 2)

默认设置 + 毫秒

mon dd yyyy hh:mi:ss:mmmAM(或 PM

10

110

美国

mm-dd-yy

11

111

日本

yy/mm/dd

12

112

ISO

yymmddyyyymmdd

-

13 113 (1, 2)

欧洲默认设置 + 毫秒

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

14

114

-

hh:mi:ss:mmm(24h)

-

20 120 (2)

ODBC 规范

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

-

21 121 (2)

ODBC 规范(带毫秒)

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

-

126 (4)

ISO8601

yyyy-mm-ddThh:mi:ss.mmm(无空格)

-

127(6, 7)

带时区 Z ISO8601

yyyy-mm-ddThh:mi:ss.mmmZ(无空格)

-

130 (1, 2)

回历 (5)

dd mon yyyy hh:mi:ss:mmmAM

-

131 (2)

回历 (5)

dd/mm/yy hh:mi:ss:mmmAM

 

float real 样式

如果 expression float real,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。

输出

0(默认值)

最多包含 6 位。根据需要使用科学记数法。

1

始终为 8 位值。始终使用科学记数法。

2

始终为 16 位值。始终使用科学记数法。

126, 128, 129

为了保持向后兼容而包括在内,在以后的版本中可能不推荐使用。

 

money smallmoney 样式

如果 expression money smallmoney,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。

输出

0(默认值)

小数点左侧每三位数字之间不以逗号分隔,小数点右侧取两位数,例如 4235.98

1

小数点左侧每三位数字之间以逗号分隔,小数点右侧取两位数,例如 3,510.92

2

小数点左侧每三位数字之间不以逗号分隔,小数点右侧取四位数,例如 4235.9819

126

转换为 char(n) varchar(n) 时,等同于样式 2

 

xml 样式

如果 data_type xml,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。

输出

0(默认值)

使用默认的分析行为,即放弃无用的空格,且不允许使用内部 DTD 子集。

1

保留无用空格。此样式设置将默认的 xml:space 处理方式设置为与指定了 xml:space="preserve" 的行为相同。

2

启用有限的内部 DTD 子集处理。

3

保留无用空格,并启用有限的内部 DTD 子集处理。

 

二进制样式

如果 expression binary(n)varbinary(n)char(n) varchar(n),则 style 可以为下表中显示的值之一。表中没有列出的样式值将返回错误。

输出

0(默认值)

ASCII 字符转换为二进制字节,或者将二进制字节转换为 ASCII 字符。每个字符或字节按照 1:1 进行转换。

如果 data_type 为二进制类型,则会在结果左侧添加字符 0x

1, 2

如果 data_type 为二进制类型,则表达式必须为字符表达式。expression 必须由数量为偶数的十六进制数字(0123456789ABCDEFabcdef)组成。如果将 style 设置为 1,字符 0x 必须为表达式中的前两个字符。如果表达式中包含的字符数为奇数或者包含任何无效的字符,则会引发错误。

如果转换后的表达式长度大于 data_type 长度,则会在右侧截断结果。

如果固定长度 data_types 大于转换后的结果,则会在结果右侧添加零。

如果 data_type 为字符类型,则表达式必须为二进制表达式。每个二进制字符均转换为两个十六进制字符。如果转换后的表达式长度大于 data_type 长度,则会在右侧截断结果。

如果 data_type 为固定大小的字符类型,并且转换后的结果长度小于其 data_type 长度,则会在转换后的表达式右侧添加空格,以使十六进制数字的个数保持为偶数。

对于 style 1,将在转换后的结果左侧添加字符 0x