2013-03-28 58 views
1

我想知道有沒有辦法做一個表的搜索給4變量(列),但是4,任何或所有變量可以被激活來執行搜索,問題是那如果我來寫,如果根據輸入的語句我有16個,如果功能(我寫了4如果我的2個變量的問題陳述)SQL搜索使用4個變量

例子:

我有一個表叫cc_music,它有4列track_nameartistalbumgenre

問題:用戶正在尋找歌曲。用戶可以輸入所有4列,或者任何1列或根本沒有列。

回答

2

您需要構建你WHERE條款是這樣,允許的添加劑,但「動態」搜索條件:

WHERE 
    (@trackName IS NULL OR track_name = @trackName) 
AND (@artist IS NULL OR artist = @artist) 
AND (@album IS NULL OR album = @album) 
AND (@genre IS NULL OR genre = @genre) 

您還需要考慮修訂這一小幅包括像部分匹配:

AND (@artist IS NULL OR artist LIKE '%' + @artist + '%') 

只是要小心這樣做與大量列的性能影響。檢查你的索引!

+0

這個工作謝謝:) –

0

假設您正在使用Oracle SQL

使用下面的SQL:

select * from cc_music where track_name like "%"||:track_name||"%" and artist like "%"||:artist||"%" and album like "%"||:album||"%" and genre like "%"||:genre||"%" ; 

其中:是綁定變量的名稱。

不需要16個不同的功能

+0

我使用PostgreSQL和Oracle不:) –

+0

你可能已經提到了這一點前面..:P –