SQL TRY_CONVERT() 函数

SQL TRY_CONVERT() 函数

SQL TRY_CONVERT() 函数尝试改变表达式的数据类型。如果转换失败,函数将返回 NULL 值,否则将返回转换后的值。

TRY_CONVERT() 函数与 CONVERT() 函数之间唯一的区别在于当转换失败时的处理方式。CONVERT() 函数将抛出错误,而 TRY CONVERT() 函数将返回 NULL 值。

语法

以下是 SQL TRY_CAST() 函数的语法:

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

参数

该函数只接受四个参数。具体如下描述:

  • expression - 需要转换为数据类型的有效表达式。

  • datatype - 我们想要将表达式转换为的数据类型。

  • length - 用于定义目标数据类型的长度,该参数为可选参数,其默认值为30。

  • style - 该参数为可选整数表达式,指定TRY_CONVERT()函数如何转换给定表达式。

示例

让我们尝试使用以下查询将字符串转换为十进制数:

SELECT TRY_CONVERT(DECIMAL(6,2), '1234.5') AS Result;

输出

当我们执行上述查询时,所得到的输出如下:

+------------------------------------+
|                              Result|
+------------------------------------+
|                            1234.50 |
+------------------------------------+

示例

让我们尝试使用以下查询将有效日期字符串转换为datetime2类型-

SELECT TRY_CONVERT (datetime2, '2023-02-23') AS Result;

输出

执行上述查询后,输出结果显示如下 –

+------------------------------------+
|                              Result|
+------------------------------------+
|         2023-02-23 00:00:00.0000000|
+------------------------------------+

示例

考虑以下示例,我们将把字符串转换为十进制,由于无法将字符串1234.45转换为十进制(3, 2),所以将返回NULL。让我们使用以下查询进行验证 –

SELECT TRY_CONVERT(decimal(3,2), '1234.45') AS Result;

输出

在执行以上查询时,输出结果显示如下 –

+------------------------------------+
|                              Result|
+------------------------------------+
|                               NULL |
+------------------------------------+

示例

让我们来看一个示例,我们在这个示例中使用 style 参数来指定表达式的翻译方式,并运行以下查询 –

SET LANGUAGE British;
SELECT 
   TRY_CONVERT(date, '02/23/2023', 101) AS "US",
   TRY_CONVERT(date, '20230223', 112) AS "ISO",
   TRY_CONVERT(date, '02/23/23', 1) AS "US (short)";

输出

上述查询的输出如下所示:

+-------------------+----------------+---------------+
|                US |          ISO   |  US(short)    |   
+-------------------+----------------+---------------+
|     2023-02-23    |     2023-02-23 | 2023-02-23    |
+-------------------+----------------+---------------+

示例

看以下示例,我们将使用以下查询将表达式转换为varchar并指定样式:

SELECT TRY_CONVERT(varchar, '2023-02-23', 101) AS Result;

输出

如果我们编译并运行上述查询,结果将如下产生:

+------------------------------------+
|                              Result|
+------------------------------------+
|                         2023-02-23 |
+------------------------------------+

示例

让我们看一个下面的示例,在这个示例中, TRY_CONVERT() 函数在显式禁止转换的情况下返回错误,具体查询如下−

SELECT TRY_CONVERT(xml, 2) AS Result;

输出

执行上述查询后,将会生成如下所示的输出结果:

Explicit conversion from data type int to xml is not allowed.

示例

让我们考虑另一个示例,在这个示例中,我们将使用 TRY_CONVERT() 函数和case语句来运行以下查询-

SELECT 
CASE WHEN TRY_CAST('TUTORIALSPOINT' AS int) IS NOT NULL
   THEN 'CastFailed'  
      ELSE 'CastSucceeded'  
END AS Result;

输出

当查询执行时,它将生成以下输出:

+------------------------------------+
|                              Result|
+------------------------------------+
|                      CastSucceeded |
+------------------------------------+

示例

考虑以下示例,我们将表达式转换为一个int类型,这会使得值被截断。通过使用以下查询:

SELECT TRY_CONVERT(int, 12.34) AS Result;

输出

当我们执行上述查询时,获得的输出如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                                 12 |
+------------------------------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程