我有一個專欄
-類別
紅藍黃
我想呈現一個條件陳述句。如果 Title 為空,則獲取所有,否則像 @Title 這樣的標題。
SELECT [Category]
FROM [dbo].[Records]
WHERE
CASE WHEN @SearchText IS NULL
THEN title = title
ELSE (Title like '%' @SearchText '%')
END
結果應該是這樣的
如果@Title 為空或為空
回傳所有值
紅藍黃
否則像 '%red%' 這樣的標題回傳紅色
這是我能想到的最好的
and (
(@SearchText IS NULL and title = title)
or
(@SearchText IS not NULL and Title like '%' @SearchText '%')
)
uj5u.com熱心網友回復:
嘗試這樣的事情:
SELECT [Category]
FROM [dbo].[Records]
WHERE ISNULL(@SearchText, '') = '' OR Title like '%' @SearchText '%'
但我覺得
SELECT [Category]
FROM [dbo].[Records]
WHERE Title like CONCAT('%', @SearchText, '%')
可能有效。
另請參見SQL Server 如何計算邏輯運算式?為了理解sql server中的邏輯運算子評估。
uj5u.com熱心網友回復:
您的代碼可以更新為:
SELECT [Category]
FROM [dbo].[Records]
WHERE (@SearchText IS NULL OR (Title like '%' ISNULL( @SearchText ,'') '%'))
如果你喂食,null那么第一個條件將是true第二個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323660.html
標籤:sql sql-server 条件语句 where子句
上一篇:SQLServer的全文搜索CONTAINS()是否容易受到SQL注入的攻擊?
下一篇:合并陳述句中的洗掉陳述句問題
