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 
    • 1

    转换为 DECIMAL

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

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

    转换为 CHAR

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

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

    转换为 NCHAR

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

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

    转换为 VARCHAR

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

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

    转换为 DATE

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

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

    转换为 TIME

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

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

    转换为 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' 
    • 1