濮阳杆衣贸易有限公司

主頁 > 知識庫 > sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法

sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法

熱門標(biāo)簽:漯河電銷回?fù)芡夂粝到y(tǒng) 電話機(jī)器人怎么看余額 合肥crm外呼系統(tǒng)加盟 怎么修改高德地圖標(biāo)注 硅基電話機(jī)器人官網(wǎng) 城市地圖標(biāo)志怎么標(biāo)注 美國地圖標(biāo)注軟件下載 長沙外呼系統(tǒng)平臺 西安電話自動外呼系統(tǒng)

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

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

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

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

另外,對字段判斷和處理,往往需要強(qiáng)制類型轉(zhuǎn)換。

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

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

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

字符串處理函數(shù):

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

(一)Access 數(shù)據(jù)庫

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

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

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

在Access中我可以用IIF函數(shù)進(jìn)行統(tǒng)計匯總,比如,要知道實(shí)際應(yīng)該交費(fèi)的用戶個數(shù)
Access寫法:Select sum(iif(金額>0, 1,0)) as num from 費(fèi)用

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

(二)Ms SQL 數(shù)據(jù)庫

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

這里我舉個例子,有一個表政策法規(guī)表(policy_fgxx),有ID(主鍵)、bzh(標(biāo)準(zhǔn)號)、zynr(主要內(nèi)容)、

fbrq(發(fā)布日期)四個字段

Select * From policy_fgxx 結(jié)果:

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

我不想要上面的結(jié)果,我想要下面這個結(jié)果:

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

也就是說,標(biāo)準(zhǔn)號為空的時候我想讓它顯示空,發(fā)布日期為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 內(nèi)容,case Des when 0 then '樂' else '園' end 名稱
 from Chat_af863d30e1c1e5eba27a0df37a75dba0 where rowid = 2;
+---------------------+----------+------+
| 時間        | 內(nèi)容   | 名稱 |
+---------------------+----------+------+
| 2013-08-22 18:54:13 | 網(wǎng)絡(luò)不好 | 園  |
| 2013-08-22 20:19:07 | 喬樂   | 園  |
+---------------------+----------+------+
2 rows in set

其它網(wǎng)友的實(shí)例:

 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

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

在我們做數(shù)據(jù)統(tǒng)計的時候這是一個非常有用的語句。

您可能感興趣的文章:
  • MySQL 的CASE WHEN 語句使用說明
  • SQL集合函數(shù)中case when then 使用技巧
  • MySQL的CASE WHEN語句的幾個使用實(shí)例
  • MySQL中使用case when 語句實(shí)現(xiàn)多條件查詢的方法
  • sql 中 case when 語法使用方法
  • 淺析SQL語句行列轉(zhuǎn)換的兩種方法 case...when與pivot函數(shù)的應(yīng)用
  • sum(case when then)(判斷男女生的個數(shù))
  • mysql case when group by 實(shí)例詳解
  • 關(guān)于case when語句的報錯問題詳解
  • MySQL排序中使用CASE WHEN的方法示例

標(biāo)簽:廣西 撫順 濟(jì)源 文山 吉林 瀘州 商洛 玉溪

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法》,本文關(guān)鍵詞  sql,學(xué),習(xí)之,CASE,WHEN,THEN,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法》相關(guān)的同類信息!
  • 本頁收集關(guān)于sql學(xué)習(xí)之CASE WHEN THEN ELSE END的用法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    锡林浩特市| 庄河市| 奉新县| 高唐县| 鲁山县| 泗洪县| 赫章县| 滨海县| 信宜市| 肥城市| 西乡县| 即墨市| 陇西县| 虎林市| 建德市| 枞阳县| 赤水市| 碌曲县| 桦南县| 松阳县| 郁南县| 江永县| 卓资县| 来宾市| 古丈县| 云林县| 东城区| 文水县| 昌图县| 岢岚县| 个旧市| 凤翔县| 屏山县| 芦溪县| 上饶市| 东光县| 宜君县| 双流县| 全南县| 昭通市| 永福县|