什麼是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值),就可以用作判斷條件。