日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql中的locate_mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法

發(fā)布時(shí)間:2024/3/12 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql中的locate_mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

之前項(xiàng)目中需要寫一個(gè)sql,就是查出某個(gè)調(diào)研詳情中,選A答案,B答案,C答案...F答案的人各有多少人,這個(gè)sql也是費(fèi)了很大的力氣才寫出來,故記下來,方便以后使用。

其中tbl_research_item為調(diào)研詳情表,tbl_user_research_item為用戶答題詳情表

SELECTitem.research_id,item.item_id,item.question,item.question_type,item.option1,item.option2,item.option3,item.option4,item.option5,item.option6,sum(CASE WHEN (LOCATE('A', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption1AnsCnt,sum(CASE WHEN (LOCATE('B', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption2AnsCnt,sum(CASE WHEN (LOCATE('C', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption3AnsCnt,sum(CASE WHEN (LOCATE('D', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption4AnsCnt,sum(CASE WHEN (LOCATE('E', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption5AnsCnt,sum(CASE WHEN (LOCATE('F', uitem.choose_option) > 0) THEN 1 ELSE 0 END) asoption6AnsCntFROMtbl_research_item itemLEFT JOIN tbl_user_research_item uitem ON (item.research_id=uitem.research_id and item.item_id=uitem.item_id)WHERE item.research_id = '10093'

and question_type != 'input'

GROUP BY item.item_id

由于每道調(diào)研的題目有可能為多選,也就是說,uitem.choose_option的值有可能為AB這樣的,所以呢,這個(gè)sql的思路是當(dāng)uitem.choose_option中先‘A’的位置大于0,就表示選了A,也就是記為1,否則為0,再將所有用戶選了A的數(shù)量求和,因此得到了這個(gè)調(diào)研中這到題選A的總?cè)藬?shù)option1AnsCnt,其他的以此類推。

在這里順便介紹一下sql中遇到的LOCATE和CASE WHEN...THEN...ELSE...END兩個(gè)函數(shù)的用法:

1.LOCATE(substr,str) :返回子串 substr 在字符串 str 中第一次出現(xiàn)的位置。如果子串 substr 在 str 中不存在,返回值為 0

例如:select?LOCATE('d', 'asdfghj') ? ?--->3

2.CASE WHEN...THEN...ELSE...END

例如:

SELECT

case?????????????????? -------------如果

when sex='1' then '男' -------------sex='1',則返回值'男'

when sex='2' then '女' -------------sex='2',則返回值'女'

else '其他'????????????-------------其他的返回'其他’

end???????????????????-------------結(jié)束

這個(gè)函數(shù)還有另外一種寫法:

CASE sex

WHEN '1' THEN '男'

WHEN '2' THEN '女'

ELSE '其他' END

這兩種寫法都是可以的

總結(jié)

以上是生活随笔為你收集整理的mysql中的locate_mysql中LOCATE和CASE WHEN...THEN...ELSE...END结合用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。