SQL TRY_CAST() 函数
SQL TRY_CAST() 函数是SQL中的转换函数之一,类似于CAST函数。它用于在不同的数据类型之间转换表达式。它用于更改表达式的数据类型。如果成功,SQL TRY CAST将返回所选数据类型中的表达式。如果不成功,则返回null。
TRY CAST()和CAST()函数之间的主要区别在于处理失败的转换的方式。CAST()函数对于失败的转换操作会产生错误,而TRY CAST()返回NULL。
语法
以下是SQL TRY_CAST()函数的语法 −
TRY_CAST ( expression AS data_type [ ( length ) ] )
参数
该函数仅接受三个参数。具体如下描述:
- expression - 要转换的有效表达式。
-
datatype - 要将表达式转换为的数据类型。
-
length - 用于定义任何目标数据类型的长度,作为可选参数。
示例
让我们尝试使用以下查询将字符串转换为十进制数。使用TRY_CAST()函数:
SELECT TRY_CAST('123.45' AS DECIMAL(6, 2)) Result;
输出:
当我们执行上述查询时,得到的输出结果如下:
+------------------------------------+
| Result|
+------------------------------------+
| 123.45 |
+------------------------------------+
示例
在下面的示例中,我们将使用 GETDATE() 以及TRY_CAST()函数,通过以下查询将日期和时间转换为日期值。
SELECT TRY_CAST(GETDATE() AS DATE) Result;
输出
执行上述查询后,输出如下所示 –
+------------------------------------+
| Result|
+------------------------------------+
| 2023-02-23|
+------------------------------------+
示例
考虑以下示例,我们将使用 GETDATE() 函数以及TRY_CAST()函数来将表达式转换为varchar,使用以下查询:
SELECT TRY_CAST(GETDATE() AS VARCHAR(22)) AS Result;
输出
执行上述查询后,输出如下所示:
+------------------------------------+
| Result|
+------------------------------------+
| Feb 23 2023 12:17PM |
+------------------------------------+
示例
让我们来看另一个场景,在这个场景中,我们将使用 GETDATE() 和TRY_CAST()函数来将日期和时间转换为时间值,使用以下查询:
SELECT TRY_CAST(GETDATE() AS TIME) Result;
输出
上述查询的输出如下所示−
+------------------------------------+
| Result|
+------------------------------------+
| 11:57:20.3266667 |
+------------------------------------+
示例
看下面的示例,我们将使用以下查询将十进制值转换为整数。
SELECT TRY_CAST(112233.4455 AS int) AS Result;
输出
如果我们编译并运行上述查询,结果如下所示−
+------------------------------------+
| Result|
+------------------------------------+
| 112233 |
+------------------------------------+
示例
让我们来看下面的示例,其中 TRY_CAST() 函数在没有超出限制时返回NULL,使用以下查询:
SELECT TRY_CAST('TUTORIALSPOINT' AS int) AS Result;
输出
执行上述查询后,将生成如下所示的输出结果−
+------------------------------------+
| Result|
+------------------------------------+
| NULL |
+------------------------------------+
示例
让我们考虑另一个示例,我们将使用 TRY_CAST() 函数与case一起运行以下查询:
SELECT
CASE WHEN TRY_CAST('TUTORIALSPOINT' AS int) IS NULL
THEN 'CastFailed'
ELSE 'CastSucceeded'
END AS Result;
输出
当查询被执行时,它将生成以下输出:
+------------------------------------+
| Result|
+------------------------------------+
| CastFailed |
+------------------------------------+
示例
考虑以下示例,在此示例中,我们使用以下查询将表达式转换为金额:
DECLARE @STR AS VARCHAR(22)
SET @STR = '12345'
SELECT TRY_CAST(@STR AS MONEY) AS Result;
输出
当我们执行上面的查询时,输出结果如下:
+------------------------------------+
| Result|
+------------------------------------+
| 12345.00 |
+------------------------------------+