If…Then…Else…End 如果三选项取交集

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:50:57
cx和zzm还有lbm,三个变量选项,
可单独查各包涵在各变量中的内容,也可二个变量取交集,或三个变量取交集,如果写语句?
我是这样写的,不知道哪错了:
if cx<>"" or zzm<>"" or lbm<>"" then
exec="select * from txl where ( sj like '%"+cx+"%') and zz='"+zzm+"' or lb='"+lbm+"' order by id desc"
elseif cx<>"" and zzm<>"" and lbm<>"" then
exec="select * from txl where ( sj like '%"+cx+"%') and zz='"+zzm+"' and lb='"+lbm+"' order by id desc"
else
exec="select * from txl order by id desc"
sql="select count(*) as ooo from txl"

DECLARE @strsql varchar(1000)

if cx <> ''
SELECT @strsql = @strsql + '( sj like %' + cx + '%)'
if @strsql <> ''
SELECT @strsql = @strsql + ' AND '
if zzm <> ''
SELECT @strsql = @strsql + 'zz = ''' +zzm+ ''' '
if @strsql <> ''
SELECT @strsql = @strsql + ' AND '
if lbm <> ''
SELECT @strsql = @strsql + 'lb='''+lbm+''' '
if @strsql = ''
SELECT @strsql = '1=1'
exec('SELECT * FROM txl WHERE ' + @strsql + ' ORDER BY id DESC')

你上面的语句逻辑上有些问题,
按照你的意思我改了一下语句.
这个是SQL SERVER 的语法.
你需要根据你的 数据库语法修改一下。