天天看點

02. SQL表達式的靈活使用

什麼是SQL表達式?在SQL語句中,表達式可以是函數,也可以是列和列之間的混合運算。

很多時候,對于表達式的使用,可以比單獨操作表上的列,帶來更多友善。

一. 在HAVING中使用表達式

傳回c1,滿足:有3個且都大于等于100 的c2 (學校的考試題中很多見)。

 同樣,表達式也可以用于group by 子句。

二. 在ORDER BY中使用表達式

1. c2列的資料按'4','1','2'的指定順序排序

(1) 使用union

 (2) 使用表達式方法1

 (3) 使用表達式方法2,再加個按照c1倒序

2. 随機排序

(1) 要求c2='4'排第一行,其他的行随機排序

 (2) 所有行随機排序

 (3) 随機取出第一行

3. 要求列c3中資料,先按第一個字元排序,再按第二個字元排序

三. 在COUNT中使用表達式

1. 使用常量表達式避免忽略NULL值

 聚合函數中, SUM/AVG/COUNT中的NULL會被忽略,比如:這裡的count(c1)忽略了null

用count(*)不會忽略NULL,同樣用count(1)也不會忽略NULL,這裡的1就是一個常量表達式,換成其他常量表達式也可以,比如count(1000)。

另外,count(1)和order by 1,2那裡的數字意思不一樣,order by後面的序号表示列号。

2. 小心表達式值為NULL被忽略

四. 在JOIN中使用表達式

要求t1,t2表的兩個列之間做比對,t2的列值包含在t1的列值裡。

事實上,在join或者where條件中,隻要能構造出比較運算表達式(傳回boolean值),就可以用作判斷條件。