![](/img/trans.png)
[英]SQL WHERE statements, where column may be value or may be NULL
[英]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.