i****a 发帖数: 36252 | 1 大家來分享 SQL/Database 小貼士吧, 一起溫故知新.
me come first, throw brick attract jade:
MSSQL
有時 SP 可以接受 null as parameter, 表示該參數沒有搜索條件. 見過太多次開發者
用 if else 語句分開, 有輸入一個 select 語句, 沒有輸入就另一個 select. 除了
where clause兩個語句完全相同. 實際上可以使用 CASE in WHERE clause to handle
different types of search criteria:
SELECT *
FROM TableA
WHERE ColumnA = CASE WHEN @creiteria IS NULL THEN ColumnA
WHEN @creiteria IS NOT NULL THEN @creiteria
END | B*****g 发帖数: 34098 | 2 你去CINAOUG贴,我给你发大包子。
handle
【在 i****a 的大作中提到】 : 大家來分享 SQL/Database 小貼士吧, 一起溫故知新. : me come first, throw brick attract jade: : MSSQL : 有時 SP 可以接受 null as parameter, 表示該參數沒有搜索條件. 見過太多次開發者 : 用 if else 語句分開, 有輸入一個 select 語句, 沒有輸入就另一個 select. 除了 : where clause兩個語句完全相同. 實際上可以使用 CASE in WHERE clause to handle : different types of search criteria: : SELECT * : FROM TableA : WHERE ColumnA = CASE WHEN @creiteria IS NULL THEN ColumnA
| i****a 发帖数: 36252 | 3 please feel free to post it.
【在 B*****g 的大作中提到】 : 你去CINAOUG贴,我给你发大包子。 : : handle
| B*****g 发帖数: 34098 | 4 小声问一句,我能贴自己常用的吗?
【在 i****a 的大作中提到】 : please feel free to post it.
| i****a 发帖数: 36252 | 5 就是等著你分享啊
【在 B*****g 的大作中提到】 : 小声问一句,我能贴自己常用的吗?
| i****a 发帖数: 36252 | 6 這麼神秘?
上面的scenario當然用你的例 OR 行, 也許更好. 你的例涵蓋了 value = null 案例,
如果column allows null.
用 CASE 可以處理其他類型的scenario, 比如需要使用不同的 column 做 where
clause
【在 B*****g 的大作中提到】 : 小声问一句,我能贴自己常用的吗?
| B*****g 发帖数: 34098 | 7 复杂程度高了performance就下来了,还不如分几个sql
,
【在 i****a 的大作中提到】 : 這麼神秘? : 上面的scenario當然用你的例 OR 行, 也許更好. 你的例涵蓋了 value = null 案例, : 如果column allows null. : 用 CASE 可以處理其他類型的scenario, 比如需要使用不同的 column 做 where : clause
| w*******e 发帖数: 1622 | 8 Why not use:
SELECT *
FROM TableA
WHERE ColumnA = ISNULL(@criteria, ColumnA)
EZ, right?
handle
【在 i****a 的大作中提到】 : 大家來分享 SQL/Database 小貼士吧, 一起溫故知新. : me come first, throw brick attract jade: : MSSQL : 有時 SP 可以接受 null as parameter, 表示該參數沒有搜索條件. 見過太多次開發者 : 用 if else 語句分開, 有輸入一個 select 語句, 沒有輸入就另一個 select. 除了 : where clause兩個語句完全相同. 實際上可以使用 CASE in WHERE clause to handle : different types of search criteria: : SELECT * : FROM TableA : WHERE ColumnA = CASE WHEN @creiteria IS NULL THEN ColumnA
| i****a 发帖数: 36252 | 9 good infos, more people come share share |
|