当前位置: 代码迷 >> Sql Server >> 请问一下ItemCode = '{3}' OR '{3}' = '' 这个Where条件是啥意思
  详细解决方案

请问一下ItemCode = '{3}' OR '{3}' = '' 这个Where条件是啥意思

热度:40   发布时间:2016-04-24 09:04:55.0
请教一下ItemCode = '{3}' OR '{3}' = '' 这个Where条件是啥意思
请教一下ItemCode = '{3}' OR '{3}' = '' 这个Where条件是啥意思
------解决思路----------------------
第4个参数如果是空字符串,就不过滤;如果有值,字段 ItemCode 必须等于该值。
这是非常没有效率的写法,已经在程序中拼SQL了,就老老实实用 if 判断来决定是否要拼上这个条件。
这样做程序只不过少写了几行代码,SQL执行起来很可能效率就是差几个数量级。
------解决思路----------------------
这是一个效率很低的写法,对执行计划的重用也不好

逻辑上的意思是,ItemCode 有条件就带入查询,没有就忽略
------解决思路----------------------
等价于

--约定{3}赋值给item变量
if isnull(item,'') <> ''
   where ItemCode = item
else
   where 1 = 1
--就是{3}有值,就按照值检索,没值就查询所有
  相关解决方案