SQL TRY_PARSE()函数

SQL TRY_PARSE()函数

SQL TRY_PARSE() 函数将一个已转换为指定数据类型的表达式的结果返回,如果转换失败,则返回NULL。它的功能与PARSE()函数基本相同,但不同之处在于,如果类型转换失败,它将返回NULL而不是错误。两个函数的目的都是将字符串值转换为日期/时间或数值类型。

语法

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

TRY_PARSE ( string_value AS data_type [ USING culture ] )

参数

此函数仅接受三个参数。具体如下所述:

  • string_value −这是我们想要更改为特定数据类型的表达式。

  • data_type −这是我们想要将string_value转换为的数据类型。

  • culture −这是一个可选参数,用于格式化字符串值的文化。

示例

在以下示例中,我们将使用TRY_PARSE()函数通过以下查询将字符串转换为日期−

SELECT TRY_PARSE('23 February 2023' AS date) AS Result;

输出

当我们执行以上查询时,得到的输出结果如下所示:

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

示例

让我们看一个以下的示例,我们将使用以下查询将字符串“-1234”转换为整数:

SELECT TRY_PARSE('-1234' AS INT) AS Result;

输出

执行以上查询时,输出如下所示 –

+------------------------------------+
|                              Result|
+------------------------------------+
|                             -1234  |
+------------------------------------+

示例

让我们来看一下以下查询,它返回NULL值,因为无法将字符串 ‘TUTORIALSPOINT’ 转换为整数 –

SELECT TRY_PARSE('TUTORIALSPOINT' AS INT) AS Result;

输出

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

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

示例

考虑以下示例,我们将在其中使用TRY_PARESE()函数以及case,并运行以下查询 –

SELECT  
   CASE WHEN TRY_PARSE('TUTORIALSPOINT' AS decimal USING 'lv-LV') IS NULL  
      THEN 'True'  
      ELSE 'False'  
END  AS Result;

输出

执行上面的查询后,输出如下:

+-------------------+
|            Result |
+-------------------+
|        True       |
+-------------------+

示例

让我们看一个示例,在这个示例中,我们将通过运行以下查询将字符串转换为日期时间。

SELECT TRY_PARSE('02/23/2023' AS DATETIME) AS Result;

输出

上述查询的输出结果如下所示 –

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

示例

让我们看一下另一种情况,我们将使用以下查询将字符串转换为datetime2:

SELECT TRY_PARSE('02/23/2023' AS datetime2) AS Result;

输出

执行上面的查询后,将生成如下所示的输出:

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

示例

让我们看一个示例,通过使用以下查询将字符串转换为十进制数。

SELECT TRY_PARSE('1234' AS DECIMAL(8, 2)) AS Result;

输出

如果我们编译并运行上述查询,结果如下所示:

+------------------------------------+
|                              Result|
+------------------------------------+
|                            1234.00 |
+------------------------------------+

示例

让我们考虑另一个示例,我们将使用IFF语句处理NULL值。当我们要插入记录时,这将非常有用。在我们的案例中,我们将使用以下查询来检查并用当前日期和时间进行替换:

SELECT IIF(
   TRY_PARSE('TUTORIALSPOINT' AS DATETIME) IS NULL, 
      GETDATE(), 
      'False'
) AS Result;

输出

当查询被执行时,它将生成如下所示的输出-

+------------------------------------+
|                              Result|
+------------------------------------+
|            2023-02-23 16:51:18.780 |
+------------------------------------+

示例

考虑以下示例,我们将使用try_parse和文化参数来使用以下查询语句 −

DECLARE @date AS VARCHAR(10)  
SET @date = '23/02/2023'  
SELECT TRY_PARSE(@date AS DATE USING 'da-DK') AS inDanish;

输出

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

+-------------------+
|         inDanish  |
+-------------------+
|       2023-02-23  |
+-------------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程