gpt4 book ai didi

sql - 防止Sql列溢出

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:27 25 4
gpt4 key购买 nike

如果我有一个采用 varchar(10) 值并将其转换为 int 的参数化存储过程,我目前必须确保该值不大于最大 int 值的 varchar 等价物。

IF @Criteria <= '2147483647'
SET @Id = CONVERT(int, @Criteria)

我的问题:是否有更好的方法来防止从 varchar 值转换时溢出 int 列?

编辑:是的,很明显,如果我觉得一个值将合法地包含接近最大值的东西,我可以扩展到 BigInt。这实际上是为了处理对该存储过程的不正确调用,并且只是一个关于在结果值可能溢出所需数据类型的情况下使用 Convert() 的通用问题。

最佳答案

要处理各种情况(空格、小数等),如果您无法在客户端上清除,请将转换包装在 TRY/CATCH 中。假设 SQL Server 2005

...
BEGIN TRY
SET @Id = CONVERT(int, @Criteria)
END TRY
BEGIN CATCH
SET @Id = NULL
END CATCH
...

关于sql - 防止Sql列溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748232/

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