SQL 语句where条件中分情况

摘要:
同时,由于传入了参数,默认显示部分中的CESE条件为0=1,这是错误的,and之后的值将不起作用。因此,当传入参数时,它们只起作用。同样,当没有参数传递时,也可以确保过滤掉参数传递部分,保留默认显示部分。

启发性案例一:

SELECT*FROM KC_GoodStandard WHERE  ( CASE WHEN 'undefined'='{传入的参数}'  THEN 1   ELSE 0 END )=1 OR GoodId='{传入的参数}'
SELECT*FROM KC_GoodStandard WHERE  ( CASE WHEN ''='{传入的参数}'  THEN 1   ELSE 0 END )=1 OR GoodId='{传入的参数}'

 启发性案例二:

SELECT*FROM dbo WHERE 1=1 AND
-------传参时显示
((CASE WHEN 'undefined'='$querystring&year&$' OR ''='$querystring&year&$' THEN 0 ELSE 1 END)=1 AND (id>1 AND id<10) )) ---- (id>1 AND id<10) 为此状态下真正想要起作用的条件 
OR 
------默认显示(即链接不传参时显示)
((CASE WHEN 'undefined'='$querystring&year&$' OR ''='$querystring&year&$' THEN 1 ELSE 0 END)=1 AND (id>10))    -----(id>10) 为此状态下真正想要起作用的条件

案例二的设计思想:

  当传入参数时,传参部分CASE条件得到 1=1 即为true,它 AND后边的(id>1 AND id<10),则(id>1 AND id<10)起作用。 同时因为传入了参数,默认显示部分的CESE条件得到 0=1 即为false,它AND后边的便不气作用。

        所以传入参数时,仅有(id>1 AND id<10) 起作用。

      同理,不传参时,也能保证传参部分被过滤掉,默认显示部分剩下。

免责声明:文章转载自《SQL 语句where条件中分情况》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Horizon Web管理界面C# 鼠标拉伸、移动控件 改变鼠标形状下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

IDEA的设置打不开,点了没反应解决办法

把它去掉用回英文d就可以了。...

webstorm关闭烦人的eslint语法检查

使用eslint语法检查后,我们发现JS代码中到处都是红线。通过右键菜单中的fixeslint problems选项,我们可以发现页面代码格式完全被eslint包装。只需关闭exlint语法检查。看不见,想不起来。反向关闭不会影响代码开发,但相反,它会影响代码开发。关闭eslint位置:文件--˃设置--˃语言和框架--˃CodeQualityTools--...

winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

“,”Delete Data“,btn)==DialogResult.Yes){}V.多条件查询。如果用户没有输入任何内容或文本框为空,则查询所有内容。//设置两个常量条件stringtj1=”1=1“;stringtj2=”1=1”;//根据用户的输入更改条件。//如果用户输入名称If(name!=”“){tj1=“Namelike@name“;}//如果...

vue的富文本编辑器使用,并且添加显示当前输入字数

{模块:{工具栏:{标题:{script://indent〔{direction:text align:background:}.editor{line-height:}.ql editor{line-high:content:padding right:...

Vue跨层级传递slot的方法

但是我需要通过插槽在父组件中指定一个模板,而B组件引用C组件。组件C的部分模板需要在组件A中配置。模板引用A组件:{{node.text}}&lt;模板引用B组件:spanslot=“nodeMenu”slot scope=“{node}”&gt;node=“node”&gt;/span&gt;/div&gt;2.2如...

CentOS7上使用history删除部分历史记录

使用history命令删除登录后创建的历史记录,但保留原始记录。如果未执行history命令,则直接使用history-r命令将文件中的历史刷新到此处的缓存中,并且不会保存以前操作的记录。修改后,执行:history-c以清除当前会话历史中的历史缓存-r以读取~/。bash_您可以看到历史文件中的历史记录已在缓存中更新。...