簡體   English   中英

在存儲過程中使用參數,其中列可能為空

[英]Using parameters in stored procedures where the column may be null

我想(輕松地)擁有一個存儲過程,例如

從表中選擇* col1像@var

@var的默認值為'%',因此,如果我沒有@var的值,它應該返回每一行。 但是,問題是它不會返回col1為null的行。

如果@var ='%',如何返回所有行;如果確實具有值,則如何返回類似於@var的行?

[實際的sp明顯更復雜,所以我不想只將它包裝在if..then中並有兩個選擇]

select * from table where isnull(col1, '') like @var

應該做到的。

只是抬頭比什么都重要。 如果要經常使用此SP,並且從中選擇的數據很大,請確保對性能進行性能測試(使用上述兩種解決方案之一)。 根據過去使用LIKE和ISNULL或IS NULL的經驗可以對性能產生重大影響

@var為'%'時,可以包括以下所有空值:

select * from table where col like @var or (@var = '%' and col is null)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM