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 |
+-------------------+