麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 文庫 > 正文

sql學習之CASE WHEN THEN ELSE END的用法

2020-10-29 21:50:52
字體:
來源:轉載
供稿:網友

超強:SQL命令中的case...when...then...else...end條件查詢(不同于where) 與 類型轉換的用法

case...when...then...else...end,是在from前面,可以改變記錄中某字段的值,不能決定是否顯示該記錄;

where,是在from后面,不可以改變記錄中某字段的值,但可以決定是否顯示該記錄。

case...when...then...else...end,可用于對同一記錄的多個字段求和,帶分支判斷。

另外,對字段判斷和處理,往往需要強制類型轉換。

select to_number('19f','xxx') from dual; --八進制
得到  415
select to_number('f','xx') from dual; --十六進制
得到  15

select to_number('123')  from dual; --十進制
得到  123

與date操作關系最大的就是兩個轉換函數:to_date(),to_char()
to_date() 作用將字符類型按一定格式轉化為日期類型:
具體用法:to_date('2004-11-27','yyyy-mm-dd'),
前者為字符串,后者為轉換日期格式,注意,前后兩者要以一對應。如to_date('2004-11-27 13:34:43', 'yyyy-mm-dd hh24:mi:ss') 將得到具體的時間

字符串處理函數:

select to_number(SUBSTR(rain_1,0,2),'xx')  from obs

(一)Access 數據庫

大家知道在access中有iif函數,能將一個判斷賦值序列簡化成一個表達式,比如
iif(a>b,1,2),如果確實a>b那么結果給出1,否則就是2。這實在很方便。

示例
(1)數字
如果 Measures.CurrentMember 是空單元,則下面的示例返回 0,否則返回 1
IIf(IsEmpty(Measures.CurrentMember), 0, 1)

(2)字符串
如果Measures.CurrentMember 是空單元,則下面的字符串返回字符串"Yes",否則返回字符串"No"
IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")

在Access中我可以用IIF函數進行統計匯總,比如,要知道實際應該交費的用戶個數
Access寫法:Select sum(iif(金額>0, 1,0)) as num from 費用

MS SQL寫法:select sum(case when 金額>0 then 1 else 0 end) as num from 費用

(二)Ms SQL 數據庫

IIF在SQL中是 case when ....then ...else...  end

例:select id,case when bz='1' then xx when bz='2' then yy else zz end as tt from xxx

這里我舉個例子,有一個表政策法規表(policy_fgxx),有ID(主鍵)、bzh(標準號)、zynr(主要內容)、

fbrq(發布日期)四個字段

Select * From policy_fgxx 結果:

ID bzh zynr fbrq
13 001 <p>你好</p> 2010-05-07 0:00:00
15 NULL

我不想要上面的結果,我想要下面這個結果:

ID bzh zynr fbrq
13 001 <p>你好</p> 2010-05-07 0:00:00
15 無 1990-06-06 0:00:00

也就是說,標準號為空的時候我想讓它顯示空,發布日期為null的時候我想讓它顯示我指定的日期

下面我給出寫法,大家可以自己思考

Select id,zynr,(case when bzh='' then '無' else bzh end) AS bzh,(case when fbrq is null then '1982-06-02' else fbrq end) AS fbrq From policy_fgxx

sqlite case when then else end

sqlite> select datetime(CreateTime, 'unixepoch', 'localtime') 時間,Message 內容,case Des when 0 then '樂' else '園' end 名稱 from Chat_af863d30e1c1e5eba27a0df37a75dba0 where rowid <= 2;+---------------------+----------+------+| 時間        | 內容   | 名稱 |+---------------------+----------+------+| 2013-08-22 18:54:13 | 網絡不好 | 園  || 2013-08-22 20:19:07 | 喬樂   | 園  |+---------------------+----------+------+2 rows in set

其它網友的實例:

 Id     name        dept
1        aa          dept1
2        bb          dept1
3        cc           dept2

SELECT SUM(CASE decp WHEN 'decp1' THEN 1 ELSE 0 end ) AS decp1,
sum(case decp when 'decp2'then 1 else 0 end)as decp2
FROM teacher

生成:

dept1     dept2

2             1

這個例子主要是學習了(CASE  WHEN  THEN   ELSE   end )語句的用法.

在我們做數據統計的時候這是一個非常有用的語句。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊久在线 | 久草在线视频中文 | caoporn国产一区二区 | 人成免费a级毛片 | 成人在线免费看 | 人人看人人艹 | 蜜桃av网 | 成人福利视频在 | 日韩av电影在线免费观看 | 性爱在线免费视频 | 成人免费视频视频在线观看 免费 | 99这里有精品 | 精品一区二区三区免费视频 | 国内精品一级毛片免费看 | 精品一二三区视频 | 国色天香综合网 | 91av日韩| v天堂在线视频 | 色吧久久 | 黄色免费在线视频网站 | 鲁丝片一区二区三区免费入口 | 黄色电影免费网址 | av电影网在线观看 | 国产美女的小嫩bbb图片 | 国产午夜精品久久久久久免费视 | 久久亚洲精品视频 | 激情亚洲一区二区 | 精品国产一区二区三区久久久蜜月 | 欧美久久久久久久久 | 一级做受大片免费视频 | 国产成人午夜高潮毛片 | 国产二区三区在线播放 | 69av导航 | av成人在线免费观看 | 色综合网在线观看 | 久久精品国产99久久6动漫亮点 | 精品一区二区三区在线观看视频 | 久久久噜噜噜久久熟有声小说 | 色婷婷av一区二区三区久久 | 国产成人午夜精品 | 国产日韩欧美 |