gpt4 book ai didi

SQL:将 varchar 转换/解析为 int 或零(非 NULL)的简单方法

转载 作者:行者123 更新时间:2023-12-04 17:07:20 25 4
gpt4 key购买 nike

我想将大约 11 或 12 个字符的 varchar 值转换为整数值并用它做一些数学运算。

如果无法解析 varchar,则在任何情况下返回值都应为 0(零)。 不为空,不是错误。

这是我尝试过的:

SELECT CAST(NULL AS INT) -- NULL
SELECT CAST('' AS INT) -- 0
SELECT CAST('42' AS INT) -- 42
SELECT CAST('abc' AS INT) -- Conversion failed when converting the varchar value 'abc' to data type int.

SELECT TRY_PARSE(NULL AS INT) -- Argument data type NULL is invalid for argument 1 of parse function.
SELECT TRY_PARSE('' AS INT) -- 0
SELECT TRY_PARSE('42' AS INT) -- 42
SELECT TRY_PARSE('abc' AS INT) -- NULL

SELECT TRY_PARSE(ISNULL(NULL, '0') AS INT) -- 0
SELECT TRY_PARSE(ISNULL(NULL, '') AS INT) -- NULL
SELECT TRY_PARSE(ISNULL(NULL, '42') AS INT) -- 42
SELECT TRY_PARSE(ISNULL(NULL, 'abc') AS INT) -- NULL

预期的输出将是
'0' --> 0
'' --> 0
'42' --> 0 42
'abc' --> 0

这有效,但是嘿,这实在是太丑了:
SELECT ISNULL(TRY_PARSE(ISNULL(NULL, '0') AS INT), 0) -- 0
SELECT ISNULL(TRY_PARSE(ISNULL(NULL, '') AS INT), 0) -- 0
SELECT ISNULL(TRY_PARSE(ISNULL(NULL, '42') AS INT), 0) -- 42
SELECT ISNULL(TRY_PARSE(ISNULL(NULL, 'abc') AS INT), 0) -- 0

有没有一种简单的方法而不使用过多的包装方法调用?

注: SQL Server cast varchar to int没有考虑到各种错误情况

最佳答案

您可以使用 try_convert()coalesce()避免错误信息的功能

select coalesce(try_convert(int, null), 0) -- 0   
select coalesce(try_convert(int, ''), 0) -- 0
select coalesce(try_convert(int, '42'), 0) -- 42
select coalesce(try_convert(int, 'abs'), 0) -- 0

关于SQL:将 varchar 转换/解析为 int 或零(非 NULL)的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com