gpt4 book ai didi

sql - 当字段不是数字时转换为数字

转载 作者:行者123 更新时间:2023-12-02 06:47:54 27 4
gpt4 key购买 nike

我正在使用一个 View ,其中的列包含一个 varchar,其值可以是 8.60VNULL

我正在尝试创建一个选择语句,该语句在可能的情况下将值转换为数字,否则返回原始值。

所以我想出了这个测试查询:

SELECT 
CASE
WHEN ISNUMERIC('V') = 1
THEN cast(round('V', 1) as numeric(4,1))
ELSE 'V'
END
as Value;

我希望它返回 V,但我收到一个错误:将数据类型 varchar 转换为数字时出错。我尝试使用 TRY_PARSETRY_CAST 以及 roundcast 都没有成功。错误似乎与 THEN 子句有关,因为没有,它不会引发错误。

我应该如何编写这个查询?

SQL 版本: Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64)

使用:Microsoft SQL Server Management Studio v12.0.2000.8

最佳答案

case 表达式返回单个值。该值具有单一类型。您的 case 表达式同时返回一个数字和一个字符串。数字优先,因此 SQL Server 尝试将字符串转换为数字。

因此,你的错误。

您可以通过省略 'V' 并仅使用 NULL 来解决此问题:

SELECT (CASE WHEN ISNUMERIC('V') = 1
THEN cast(round('V', 1) as numeric(4,1))
ELSE NULL
END) as Value;

或者,更简单地说:

SELECT TRY_CONVERT(numeric(4, 1), 'V')

注意:我假设您打算将 'V' 作为示例字符串值而不是列。如果是一列,单引号就错了。

关于sql - 当字段不是数字时转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53225586/

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