0

嗨,我在 .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
4

6 回答 6

3

显然:

{ fn LENGTH(@SearchStringtext)}

...正在评估为零。

于 2009-01-02T11:13:40.873 回答
1

如果 SearchStringtext 为空,则它的长度变为 0。因此存储过程尝试除以零(这是未定义的事情)。

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

{ fn LENGTH(@SearchStringtext)}

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

于 2009-01-02T11:15:14.817 回答
1

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

于 2009-01-02T11:16:39.587 回答
1
{ fn LENGTH(@SearchStringtext)}

正在评估为 0。

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

于 2009-01-02T11:19:54.213 回答
1

本程序中唯一的除法运算,有fn LENGTH(@SearchStringtext)作为除数。

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

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

于 2009-01-02T11:24:36.030 回答
0

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

于 2009-01-02T11:14:04.803 回答