sql语句中case-when用法
来源:互联网 发布:留守儿童犯罪率数据 编辑:程序博客网 时间:2024/05/17 01:57
今天有个朋友问我这样一个问题,如下图,为什么1和2颠倒了,从而引出了sql中的case-when语句。
问题是这个地方为什么Activety是2,Controller是1,按照正常逻辑应该是Activety是1,Controller是2。
后来发现是sql语法有错了,应该写成如下样子:
case关键字后面不应该跟变量~那么问题来了,case语法到底是什么样的?
其实case语法有两种格式:
SELECT NAME AS NAME,CASE category WHEN 'tech' THEN 'gaga'WHEN 'words' THEN 'prince'FROM daily
SELECT NAME AS NAME,CASE WHEN category ='tech' THEN 'gaga'WHEN category ='words' THEN 'prince'FROM daily
两种方式效果相同,但是第二种方式可以做更复杂的逻辑,上文中问题在于把这两种方式写在了一起,但是问题是,写在一起语法竟然是没错的,那么最后会按照那种语法来执行呢?研究之后发现是第一语法来执行。而此时when关键字后面的值要么是true要么是false,最后sql的语义变成了case后变量和true和false比较。比较奇怪的是在mysql中,一个字符串和false比返回是真,而与true比较返回是假。这个大家可以自己去做下实验。
SELECT bigcate FROM daily a WHERE a.bigcate=(FALSE) LIMIT 100;类似于上面的写法返回的是全集
SELECT bigcate FROM daily a WHERE a.bigcate=(TRUE) LIMIT 100;
上面的写法返回的是空集。
然后再回到最开始的sql去分析下,很自然就清楚结果是怎么来的了。
转载请注明出处:http://gagalulu.wang/blog/detail/17 您的支持是我最大的动力!
0 0
- SQL语句中CASE WHEN用法
- SQL语句中CASE WHEN用法
- SQL语句中CASE WHEN用法
- SQL语句中CASE WHEN用法
- sql语句中case-when用法
- SQL语句的写法:update语句中 case...when 用法
- SQL中CASE...WHEN语句
- sql语句中"case when"的简单用法示例
- IsNull 和 SQL语句中CASE WHEN用法
- 【转】IsNull 和 SQL语句中CASE WHEN用法
- IsNull 和 SQL语句中CASE WHEN用法
- sql语句中判断 case when的用法
- SQL语句----CASE WHEN 的用法简介
- SQL语句case when结构用法
- sql语句判断 case when用法(二)
- sql语句中的case when用法
- sql语句判断 case when用法
- case when语句用法
- CSS 布局模型
- VS添加环境变量和自定义宏
- PASSION之XML详解
- [从头学数学] 第50节 复式统计表
- 注册时手机验证用户
- sql语句中case-when用法
- 浅析Java中CountDownLatch用法
- ejb injection
- 请教一个pip install 出现报asciii码错误的问题
- UVA 18451 阅读题
- Android中下拉刷新和加载更多的实现方式
- 【WC2002】奶牛浴场
- java自带线程池和队列详细讲解
- 2016.01.17—-即便没有读者,你也要写博客