SQL Server 函数

SQL Server (Transact-SQL) TRY_CONVERT() 函数尝试将表达式从一种数据类型转换为另一种数据类型。如果转换失败,函数将返回NULL。否则,它将返回转换后的值。

注意:CONVERT() 函数与此函数类似,只是如果转换失败,CONVERT() 函数会返回错误(而不是 NULL)。

语法

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

参数

data_type必填。 指定要转换为的数据类型。 请参阅SQL Server 的数据类型。 请注意,不能使用 Alias 数据类型。
length可选。 对于允许用户指定长度的数据类型,指定结果数据类型的长度。 默认值为 30。
expression 必填。 指定要转换为另一种数据类型的值。
style

可选。 一个整数表达式,用于指定用于在数据类型之间转换的格式,例如日期格式或字符串格式。 对于 NULL 的样式值,返回 NULL。

日期和时间样式

对于日期或时间数据类型表达式,样式可以是以下值之一:

日期和时间样式

对于日期或时间数据类型表达式,样式可以是以下值之一:

值(不带世纪)值(带世纪)描述
0 或 100mon dd yyyy hh:miAM/PM(日期时间的默认值 和小日期时间)
11011 = mm/dd/yy, 101 = mm/dd/yyyy(美国 标准)
21022 = yy.mm.dd, 102 = yyyy.mm.dd(ANSI 标准 )
31033 = dd/mm/yy, 103 = dd/mm/yyyy(英国/法国 标准)
41044 = dd.mm.yy, 104 = dd.mm.yyyy(德国标准 )
51055 = dd-mm-yy, 105 = dd-mm-yyyy(意大利标准)
61066 = 日月年,106 = 日月年
71077 = 周一 dd、yy,107 = 周一 dd、yyyy
8 或 24108hh:mi:ss
9 或 109mon dd yyyy hh:mi:ss:mmmAM/PM(默认 + 毫秒)
1011010 = mm-dd-yy, 110 = mm-dd-yyyy(美国标准)
1111111 = yy/mm/dd, 111 = yyyy/mm/dd(日本标准)
1211212 = yymmdd , 112 = yyyymmdd(ISO 标准)
13 或 113dd mon yyyy hh:mi:ss:mmm ( 欧洲标准 - 24 小时制,默认 + 毫秒)
14114hh:mi:ss:mmm (24 小时时钟)
20 或 120yyyy-mm-dd hh:mi:ss(ODBC 规范 - 24 小时 时钟)
21 或 25 或 121yyyy-mm-dd hh:mi:ss.mmm(ODBC 规范 - 24 小时时钟(毫秒),默认时间、日期、datetime2 和 datetimeoffset)
22mm/dd /yy hh:mi:ss AM/PM(美国标准)
23yyyy-mm-dd (ISO8601 标准)
126yyyy-mm-ddThh:mi:ss.mmm(ISO8601标准)
127yyyy-MM-ddThh:mm:ss.fffZ(ISO8601标准,时区Z)
130dd mon yyyy hh:mi:ss:mmmAM(回历标准)
131dd/mm/yyyy hh:mi:ss:mmmAM(回历标准)

浮点和实数样式

对于浮点或实数数据类型表达式,样式可以是以下值之一:

描述
0(默认)A 最多 6 位数字。 适当时使用科学计数法。
1始终为 8 位数字。 始终使用科学计数法。
2始终为 16 位数字。 始终使用科学记数法。
3始终为 17 位数字。 用于无损转换。 使用这种样式,可以保证每个不同的浮点值或实数值都转换为不同的字符串。 注意:适用于:SQL Server(从 SQL Server 2016 (13.x) 开始)和 Azure SQL 数据库。

Money 和 SmallMoney 样式

对于 Money 和 SmallMoney 数据类型表达式,样式可以是以下值之一:

描述
0(默认)无逗号 分隔符,小数点右侧 2 位数字,示例:1234.56
1逗号分隔符,小数点右侧 2 位数字,示例:1,234.56
2无逗号分隔符,小数点右侧 4 位数字,示例:1234.5678

返回值

返回表达式i> 转换为另一种data_type。

转换为 INT

TRY_CONVERT() 函数可用于转换值为 INT 类型。例如 - 在下面的示例中,123.456 转换为 INT 数据类型。

SELECT TRY_CONVERT(INT, 123.456);
Result: 123 

转换为 DECIMAL

TRY_CONVERT() 函数可用于转换DECIMAL 类型的值。例如 - 在下面的示例中,"123.456"转换为 DECIMAL 数据类型。

SELECT TRY_CONVERT(DECIMAL(5, 2), '123.456');
Result: 123.46 

转换为 CHAR

可以使用 TRY_CONVERT() 函数将值转换为 CHAR 类型。例如 - 在下面的示例中,123 被转换为 CHAR 数据类型。

SELECT TRY_CONVERT(CHAR(4), 123);
Result: '123' 

转换为 NCHAR

TRY_CONVERT() 函数可用于转换NCHAR 类型的值。例如 - 在下面的示例中,123 被转换为 NCHAR 数据类型。

SELECT TRY_CONVERT(NCHAR(10), 123);
Result: '123' 

转换为 VARCHAR

TRY_CONVERT() 函数可用于转换VARCHAR 类型的值。例如 - 在下面的示例中,123 被转换为 VARCHAR 数据类型。

SELECT TRY_CONVERT(VARCHAR, 123);
Result: '123' 

转换为 DATE

TRY_CONVERT() 函数可用于转换DATE 类型的值。例如,在下面的示例中,"2018-08-18"将转换为 DATE 数据类型。

SELECT TRY_CONVERT(DATE, '2018-08-18');
Result: '2018-08-31' 

转换为 TIME

TRY_CONVERT()函数可用于将值转换为 TIME 类型。例如 - 在下面的示例中,"10:38:42"被转换为 TIME 数据类型。

SELECT TRY_CONVERT(TIME, '10:38:42');
Result: '10:38:42' 

转换为 DATETIME

TRY_CONVERT()函数可用于将值转换为 DATETIME 类型。例如 - 在下面的示例中,"2018-08-18 10:38:42"被转换为 DATETIME 数据类型。

SELECT TRY_CONVERT(DATETIME, '2018-08-18 10:38:42', 101);
Result: '2018-08-18 10:38:42'