gpt4 book ai didi

sql - 如果传递 null 将引发错误的 TSQL 函数?

转载 作者:搜寻专家 更新时间:2023-10-30 22:01:35 24 4
gpt4 key购买 nike

我希望在我的 TSQL 库中添加一些代码,以防止在列中的数据为空时在 SQL 中执行聚合。理想情况下,在 sql server 中会有一个 SUM_NN(对于 sum no null),如果任何值为 null,它会引发错误。

因为你不能从 UDF 中引发错误,所以我能想到的唯一方法是这样的,尽管我不喜欢这个解决方案:

CREATE FUNCTION dbo.NULL_TEST_F(@arg FLOAT)
RETURNS FLOAT
AS
BEGIN
IF(@arg IS NULL)
SELECT 1/0
RETURN @arg
END

注意:我认为这是一个愚蠢的解决方案,但是当我丢失数据时我被烧毁了太多次。此外,我们使用的是 SQL Server 2005,但我对 2008 和 2012 解决方案持开放态度。此外,我想知道其他数据库如何处理此类问题。

最佳答案

这是我的最终解决方案:

CREATE FUNCTION [dbo].[NullTest_F]
(
@input FLOAT,
@message VARCHAR(100)
)
RETURNS FLOAT
AS
BEGIN
DECLARE @test INT
IF(@input IS NULL)
SELECT @test = CAST(@message AS INT)
RETURN @input
END

然后我可以在运行聚合函数时将其与有用的错误消息一起嵌入。示例:

CREATE TABLE Data (
Date DATETIME,
DataPoint FLOAT
)

INSERT INTO Data (Date, DataPoint) VALUES ('2012-03-01', 4)
INSERT INTO Data (Date, DataPoint) VALUES ('2012-03-02', 6)

SELECT SUM(NullTest_F(DataPoint, 'Missing data at' + CONVERT(VARCHAR(10), Data))
FROM Data

关于sql - 如果传递 null 将引发错误的 TSQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11786054/

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