日期:2014-05-18  浏览次数:20402 次

关于搜索数据库
单曲名称:
所属专辑:
作曲:
作词:
演唱:
演奏:
指挥:
乐器:请选择(ID)
时间:
唱片公司:请选择(ID)
流派: 请选择(ID)
风格:请选择(ID)
主题: 请选择(ID)

等.

主表是Songs表

还有些数据记录在附表中~
我想实现高级搜索~

用一个存储过程过滤出来歌曲的IDS 然后在主表中找到相关歌曲~~

但是遇到的问题是:20个参数,判断如何实现..(20个里面是任意选择的~)
可能是一个,也可能是非个~或者任意几个~
指教下~ 谢谢~


------解决方案--------------------
SQL code

select  a.* from song a
inner join ...附属表1
on ..
inner join ...附属表2
on ..
where songname like '%' + isnull(nullif(@songname,''),songname) + '%'
    and AlbumsName like '%' + isnull(nullif(@AlbumsName,''),AlbumsName) + '%'
    and Composer = isnull(nullif(@Composer),Composer )
    and ...

这样就可以了,无论参数给''这样的空字串,还是null值,都可以进行匹配.具体的我就不写了,你自己跟具需要处理一下.