SQL TRY_PARSE 函数

SQL TRY_PARSE 是转换函数之一。此函数将字符串数据转换为所需的数据类型,并将结果作为表达式返回。例如,我建议您使用此 TRY_PARSE 函数将字符串数据转换为日期/时间或数字类型。

如果 Try_Parse 函数无法将字符串转换为所需数据类型,或者我们传入的字符串无法转换,则此函数将返回 NULL。SQL Server TRY_PARSE 函数的语法是:

TRY_PARSE (String_Value AS Data_Type [USING Culture])

-- For example
SELECT TRY_PARSE (String_Column AS Data_Type USING 'en-US') AS [Column1]
FROM [Source]
  • String_Value:请指定您要转换为所需数据类型的有效字符串。
  • Data_Type:在这里,您必须指定要将 String_Value 转换为的数据类型。
  • Culture:这是一个可选参数。如果您忽略此参数,则函数将使用当前会话的语言。

SQL Server TRY_PARSE 示例

Try_Parse 函数主要用于将字符串值转换为日期和时间,以及数字值。例如,下面的查询会将字符串解析为整数和十进制。另外,还会将字符串解析为日期时间。

DECLARE @str AS VARCHAR(50)
SET @str = '1234'

SELECT TRY_PARSE(@str AS INT) AS Result; 

-- Direct Inputs
SELECT TRY_PARSE('4455' AS DECIMAL(10, 2)) AS Result; 
 
SELECT TRY_PARSE('03/03/2017' AS DATETIME) AS Result;  

SELECT TRY_PARSE('03/03/2017' AS DATETIME2) AS Result; 

SELECT TRY_PARSE('Tutorial Gateway' AS DATETIME USING 'en-US') AS Result;
SQL TRY_PARSE Function 1

下面几行 SQL Server 代码用于声明一个 VARCHAR 数据类型的变量。接下来,我们为其赋了一个字符串数据‘1234’。

DECLARE @str AS VARCHAR(50)
SET @str = '1234'

从下面的语句中,您可以看到我们正在使用 try parse 函数将字符串转换为整数。我们还使用 别名 列为结果赋予了新名称‘Result’。

SELECT TRY_PARSE(@str AS INT) AS Result;

在下一行,我们直接在字符串上使用 SQL TRY_PARSE 函数并将其转换为十进制值。

SELECT TRY_PARSE('4455' AS DECIMAL(10, 2)) AS Result;

接下来,我们将字符串转换为 Date-Time 和 DateTime 2 数据类型。请参考 数据类型 以了解数据类型限制。

SELECT TRY_PARSE('03/03/2017' AS DATETIME) AS Result;  

SELECT TRY_PARSE('03/03/2017' AS DATETIME2) AS Result;

最后,我们尝试将‘Tutorial Gateway’字符串转换为日期时间。正如您所见,这是不可能的,因此此 SQL Server Try Parse 函数返回 NULL 作为输出。

SELECT TRY_PARSE('Tutorial Gateway' AS DATETIME USING 'en-US') AS Result;

将 IIF 与 SQL TRY_PARSE 结合使用

在此示例中,我们向您展示如何使用 IIF 语句 来处理 TRY_PARSE 返回的 NULL。这在您插入记录时非常有用,因为您不知道该列是否包含日期和时间。在这种情况下,您可以使用此函数进行检查;如果不是,我们可以将其替换为当前日期和时间。

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

在这里,我们使用了IIF 语句IS NULL 语句来检查结果表达式是否为 null。

TRY_PARSE Function IS NULL IIF example 2