SQL搜索使用4个变量

时间:2013-03-28 13:42:10

标签: sql postgresql

我想知道有没有办法搜索一个表给4个变量(列),但是在4中,任何或所有变量都可以激活来进行搜索,问题是如果我要写if语句取决于输入我将有16如果函数(我为我的2变量问题写了4 if语句)

示例:

我有一个名为cc_music的表,它有4列track_nameartistalbumgenre

问题:用户正在寻找一首歌。用户可以输入所有4列,或者任何1列或根本不输入。

2 个答案:

答案 0 :(得分: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 + '%')

请注意使用大量列进行此操作时的性能影响。检查索引!

答案 1 :(得分: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种不同的功能