1

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

例子:

我有一个名为的表,cc_music它有 4 列track_name、和。artistalbumgenre

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

4

2 回答 2

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 + '%')

请注意对大量列执行此操作的性能影响。检查你的索引!

于 2013-03-28T13:44:23.033 回答
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 种不同的功能

于 2013-03-28T14:00:19.790 回答