gpt4 book ai didi

sql - 如何避免在 sql 查询中使用多个 CAST?

转载 作者:行者123 更新时间:2023-12-04 21:37:02 28 4
gpt4 key购买 nike

我有以下用于转换数据的 sql 查询,但是否可以将 int 的值保存在某个变量中以避免多次转换?

update prospekts set sni_kod = case

when
cast(sni_kod as int) >= 1000 and cast(sni_kod as int) <= 1499
or cast(sni_kod as int) >= 1600 and cast(sni_kod as int) <= 2439
then '1'
when
cast(sni_kod as int) >= 7000 and cast(sni_kod as int) <= 7499
then 'W'
else
sni_kod
end

脚本中还有很多when-case,这里只展示第一个。除了简单的文本脚本,我不能使用任何东西。

更新使用 SQL Server 2000

谢谢

安德斯

最佳答案

好的...这是我重写的代码...

UPDATE prospekts SET sni_kod = 
CASE
WHEN ISNUMERIC(@sni_kod)=1 THEN
CASE
WHEN cast(@sni_kod as int) BETWEEN 1000 AND 1499 OR cast(@sni_kod as int) BETWEEN 1600 AND 2439 THEN '1'
WHEN cast(@sni_kod as int) BETWEEN 7000 AND 7499 THEN 'W'
ELSE @sni_kod
END
ELSE @sni_kod
END

这样,如果它是一个数值,它只会尝试执行 CAST,因此您不会像其他人在评论中提到的那样得到强制转换异常。

既然你说涉及更多的语句,我猜你有更多的数字范围得到不同的值......如果是这样的话,你可以使用第二个表(可以是临时的,如果像您的问题所说的那样,您仅限于 SQL 代码)加入具有最小值、最大值以及您希望基于此显示的内容。当您需要评估非数字值时会变得更加棘手,但这并非不可能。

虽然没有看到完整的声明,但这是我能提供的最好的。

关于sql - 如何避免在 sql 查询中使用多个 CAST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/249819/

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