我想知道有没有办法搜索一个表给4个变量(列),但是在4中,任何或所有变量都可以激活来进行搜索,问题是如果我要写if语句取决于输入我将有16如果函数(我为我的2变量问题写了4 if语句)
示例:
我有一个名为cc_music
的表,它有4列track_name
,artist
,album
和genre
。
问题:用户正在寻找一首歌。用户可以输入所有4列,或者任何1列或根本不输入。
答案 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种不同的功能