在存储过程中除以零错误

时间:2009-01-02 11:10:58

标签: sql sql-server tsql stored-procedures divide-by-zero

您好我在.net Web应用程序中执行了以下存储过程。然后运行该应用程序。我收到了这个错误

“除以零错误”

存储过程:

CREATE procedure Details(@Stringtext varchar(8000),@SearchStringtext varchar(100))
as begin
SELECT ({fn LENGTH(@Stringtext)}-
{fn LENGTH({fn REPLACE(@Stringtext, @SearchStringtext, '')})})/
{ fn LENGTH(@SearchStringtext)}AS String_Count

end

6 个答案:

答案 0 :(得分:3)

显然:

{ fn LENGTH(@SearchStringtext)}

......评估为零。

答案 1 :(得分:1)

如果SearchStringtext为空,则它的长度变为0.因此存储过程尝试除以零(这是undefined thing to do)。

换句话说,以下部分变为零:

{ fn LENGTH(@SearchStringtext)}

如果SearchStringtext为空,您可能需要添加一些逻辑(可能是if语句)以防止发生除法。

答案 2 :(得分:1)

SearchStringText的长度为零,因此有零除错误。 确保在调用函数时,字符串的长度不为零。 或者在选择之前检查长度

答案 3 :(得分:1)

{ fn LENGTH(@SearchStringtext)}

正在评估为0。

但是,为什么这是一个存储过程?您没有使用任何数据库功能?除非这是一个简化的问题,所有这些(长度,替换等)都可以在.net应用程序中完成

答案 4 :(得分:1)

此过程中唯一的除法操作, fn LENGTH(@SearchStringtext) 作为除数。

因此,**SearchStringtext**的长度似乎正在评估为零。您可能正在尝试搜索空字符串。

请检查并详细说明问题详情以及数据库平台。

答案 5 :(得分:0)

似乎SearchStringtext的长度为0 - 因此过程会尝试除以零。