在使用SP_ExecuteSQL时返回NULL数据值



我正在使用sp_executesql,所以我可以灵活地选择返回的内容。我遇到了一个问题,当试图返回没有数据的地方。

说,例如,我试图找到所有的行,没有分配的所有者。目前,我的查询如下。

 if @owner <> ''
    Begin
        SELECT @sql = @sql + 'and owner LIKE ''%'+@owner+'%'''
    END

这允许我不必选择所有者。如果我这样做,它当然会被包含在我的查询中。

因为我现在试图添加一行,基本上可以让我只是带回未分配的所有者:

 if @owner = 'Unassigned'
BEGIN
    SELECT @sql = @sql + 'and owner IS NULL' 
END

然而,当我这样做时,它会返回整个列表。想法/建议?

如果您将最后一行更改为PRINT @sql,您将注意到两个条件都存在。试着把你的代码改成这样。

if @owner <> ''
Begin
    if @owner = 'Unassigned'
        SELECT @sql = @sql + 'and owner IS NULL'
    else
        SELECT @sql = @sql + 'and owner LIKE ''%'+@owner+'%'''
END

也可以使用CASE表达式

SELECT @sql = @sql + CASE ISNULL(@owner, '') 
                       WHEN '' THEN ''
                       WHEN 'Unassigned' THEN ' and owner IS NULL'
                       ELSE ' and owner LIKE ''%' + @owner + '%''' END

相关内容

  • 没有找到相关文章

最新更新