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