2

私は 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

ただし、これを行っていると、リスト全体が返されます。考え/提案?

4

2 に答える 2

3

最後の行を に変更するPRINT @sqlと、両方の条件が存在することがわかります。コードをこれに変更してみてください。

if @owner <> ''
Begin
    if @owner = 'Unassigned'
        SELECT @sql = @sql + 'and owner IS NULL'
    else
        SELECT @sql = @sql + 'and owner LIKE ''%'+@owner+'%'''
END
于 2013-03-26T15:31:06.600 に答える
0

また、 CASE式でオプションを使用できます

SELECT @sql = @sql + CASE ISNULL(@owner, '') 
                       WHEN '' THEN ''
                       WHEN 'Unassigned' THEN ' and owner IS NULL'
                       ELSE ' and owner LIKE ''%' + @owner + '%''' END
于 2013-03-26T17:16:28.683 に答える