iT邦幫忙

0

SQL 條件中的條件

MSSQL 2014
預期畫面

欄位A 
 0  
 1
 2
 3
 4

當 @參數A ='' 欄位A顯示 0 1 2 3 4
@參數A ='0' 欄位A顯示 1 2 3 4
@參數A ='1' 欄位A顯示 0

請問WHERE條件要如何下?

CREATE TABLE #TEST
(
欄位A nvarchar(20)
)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
暐翰
iT邦大師 1 級 ‧ 2019-05-16 16:08:59
最佳解答

主要邏輯使用Like Regex + case when

查詢SQL

declare @參數A nvarchar(1) = '1';
select * from T
where [欄位A] like 
    case @參數A when '' then '[0|1|2|3|4]'
        when '0' then '[1|2|3|4]'
        when '1' then '0'
    end

測試DDL:

CREATE TABLE T
	([欄位A] nvarchar(1))
;
	
INSERT INTO T
	([欄位A])
VALUES
	('0'),
	('1'),
	('2'),
	('3'),
	('4')
;

線上測試連結


效果圖

Zed_Yang iT邦新手 3 級 ‧ 2019-05-16 16:28:32 檢舉

感謝大大 學到新的方法了
成功解決問題
where 欄位 like case when 參數 = '' then
when 參數 = '0' then
when 參數B = '' then
這樣如果有多種參數影響一個欄位
也可以成立條件了

0
小魚
iT邦大師 1 級 ‧ 2019-05-16 16:10:07

@參數A 怎麼決定的??
欄位A顯示那些內容的條件又是怎麼定的??

看更多先前的回應...收起先前的回應...
Zed_Yang iT邦新手 3 級 ‧ 2019-05-16 16:18:15 檢舉

參數A 是來自windowForm 一個combobox的選項
當參數A 選擇 非專業投資人
欄位A 只能顯示非專業人 (0)
WHERE 欄位A = 0

當參數A 選擇 專業投資人
欄位A 只能顯示專業投資人 (1~6)
WHERE 欄位A <> 0

當參數A 選擇 (空白)
欄位A 全部都顯示(0~6)
WHERE 參數A = ''

小魚 iT邦大師 1 級 ‧ 2019-05-16 16:22:16 檢舉

恩恩,
邏輯很清楚,
然後參考暐翰大大的語法就可以寫出來了.

小魚 iT邦大師 1 級 ‧ 2019-05-16 16:24:21 檢舉

不過 > 0 應該沒辦法用Like,
或是也可以在程式裏面分成三種情況寫不同的SQL語法.

Zed_Yang iT邦新手 3 級 ‧ 2019-05-16 16:29:48 檢舉

thx 直接分成三種不同sql寫法 確實也是一種方法
不過這是最後手段哈哈

我要發表回答

立即登入回答