首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

SQL语句 有关问题

2012-01-10 
SQL语句 问题select*fromempwhereemp_namelike%%andEMP_SEXlike%%andDEPT_IDlike%%andDUTY_IDlike%%andOPS

SQL语句 问题
select   *   from   emp   where   emp_name   like   '%% '   and   EMP_SEX   like   '%% '   and   DEPT_ID   like   '%% '   and   DUTY_ID   like   '%% '   and   OPSITION_ID   like   '%% '   and   EMP_SPEC   like   '%% '   and   EMP_IDENTITY_CARD   like   '%% '  


愿句为:   string   sql   =   "select   *   from   emp   where   emp_name   like   '% "   +   name   +   "% '   and   EMP_SEX   like   '% "   +   sex   +   "% '   and   DEPT_ID   like   '% "   +   dept   +   "% '   and   DUTY_ID   like   '% "   +   duty   +   "% '   and   OPSITION_ID   like   '% "   +   option   +   "% '   and   EMP_SPEC   like   '% "   +   sep   +   "% '     and   EMP_IDENTITY_CARD   like   '% "   +   cardid   +   "% ' ";
请问我这语句有何问题???????????


[解决办法]
LZ说: 这么写主要是我有7个参数,但是结合起来的判断条件要是一个一个来就有2的7次幂个条件。

那么下面这样可以么?

select * from emp where (参数1= ' ' or emp_name like '%参数1% ') and (参数2= ' ' or EMP_SEX like '%参数2% ') and (参数3= ' ' or DEPT_ID like '%参数3% ') and (参数4= ' ' or DUTY_ID like '%参数4% ') and (参数5= ' ' or OPSITION_ID like '%参数5% ') and (参数6= ' ' or EMP_SPEC like '%参数6% ') and (参数7= ' ' or EMP_IDENTITY_CARD like '%参数7% ' )
[解决办法]
不用那么多If判断,这样写就可以:

select *
from emp
where (emp_name like '% ' + @emp_name + '% ' or @emp_name is null)
and (EMP_SEX like '% ' + @EMP_SEX + '% ' or @EMP_SEX is null)
and (DEPT_ID like '% ' + @DEPT_ID + '% ' or @DEPT_ID is null)
and (DUTY_ID like '% ' + @DUTY_ID + '% ' or @DUTY_ID is null)
and (OPSITION_ID like '% ' + @OPSITION_ID + '% ' or @OPSITION_ID is null)
and (EMP_SPEC like '% ' + @EMP_SPEC + '% ' or @EMP_SPEC is null)
and (emp_name like '% ' + @EMP_IDENTITY_CARD + '% ' or @EMP_IDENTITY_CARD is null)

对于为空的,传入System.DBNull

热点排行