算術運算
|
+
|
用法:SELECT 2 + 3 說明:加法運算
|
-
|
用法:SELECT 5 - 4 說明:減法運算
|
*
|
用法:SELECT 4 * 6 說明:乘法運算
|
/
|
用法:SELECT 12 / 6 說明:除法運算
|
% 或 MOD(N,M)
|
用法:SELECT 12 % 5 說明:模數運算(取餘數)
|
ABS(X)
|
用法:SELECT ABS(-32)
|
說明:求 X 的絕對值
|
FLOOR(X)
|
用法:SELECT FLOOR(1.23)
|
說明:求不大於 X 的最大整數(有「無條件捨去」的效果)
|
CEILING(X)
|
用法:SELECT CEILING(1.23)
|
說明:求不小於 X 的最小整數(有「無條件進入」的效果)
|
ROUND(X)
|
用法:SELECT ROUND(1.58)
|
說明:求 X 四捨五入到個位的值
|
比較運算
|
=
|
用法:SELECT 2 = 2 說明:等於
|
<> 或 !=
|
用法:SELECT '.01' <> '0.01' 說明:不等於
|
<=
|
用法:SELECT 0.1 <= 2 說明:小於等於
|
<
|
用法:SELECT 2 < 2 說明:小於
|
>=
|
用法:SELECT 2 >= 2 說明:大於等於
|
>
|
用法:SELECT 2 > 2 說明:大於
|
<=>
|
用法:SELECT NULL <=> NULL
|
說明:NULL safe equal,功能與 = 相似,只要兩個值相等就傳回 1,即使是 NULL
|
IS NULL
|
用法:SELECT 1 IS NULL 說明:判斷值是否為 NULL
|
IS NOT NULL
|
用法:SELECT 1 IS NOT NULL 說明:判斷值是否不為 NULL
|
expr
BETWEEN min AND max
|
用法:SELECT 1 BETWEEN 2 AND 3 說明:判斷值是否介於 min 與 max 之間
|
expr
NOT BETWEEN min AND max
|
用法:SELECT 1 NOT BETWEEN 2 AND 3 說明:判斷值是否不介於 min 與 max 之間
|
expr
IN (value, ...)
|
用法:SELECT 2 IN (0, 3, 5, 'wefwf') 說明:判斷是否符合列舉項目的範圍
|
expr
NOT IN (value, ...)
|
用法:SELECT 2 NOT IN (0, 3, 5, 'wefwf') 說明:判斷是否不在列舉項目的範圍
|
ISNULL(expr)
|
用法:SELECT ISNULL(1+1) 說明:判斷 expr 中是不是
NULL 值
|
COALESCE(list)
|
用法:SELECT COALESCE(NULL,1) 說明:在 list 的所有項目中,找出第一個不是 NULL 的資料
|
INTERVAL(N,N1,N2,N3,...)
|
用法:SELECT INTERVAL(23, 1, 15, 17, 30, 44)
|
說明:若 n<n1 就傳回 0,若 n<n2 就傳回 1,餘依此類推。當 n 為 NULL 時,傳回 -1。所用的值(n1,
n2, n3, ...)必須嚴格遞增,意即 n1 < n2 < n3 < ...,否則在快速的 binary search 運作下,會傳回不可預期的錯誤結果。
|
位元運算
|
&
|
用法:SELECT 29 & 15 說明:交集運算(AND)
|
|
|
用法:SELECT 29 | 15 說明:聯集運算(OR)
|
^
|
用法:SELECT 1 ^ 1 說明:互斥運算(XOR)
|
~
|
用法:SELECT 5 & ~1 說明:Invert all bits
|
>>
|
用法:SELECT 4 >> 2 說明:向右移位
|
<<
|
用法:SELECT 1 << 2 說明:向左移位
|
邏輯運算
|
NOT 或 !
|
用法:SELECT NOT 1 說明:否
|
OR 或 ||
|
用法:SELECT 1 || 0 說明:或
|
AND 或 &&
|
用法:SELECT 1 && 1 說明:且
|
XOR
|
用法:SELECT 1 XOR 1 說明:互斥,「a XOR b」等於「a AND (NOT b)」或是「(NOT a) AND
b」
|
字串運算
|
LIKE 與萬用字元( % 、 _ )
|
「%」是個萬用字元,它可以用來代表零或多個字元;「_」也是個萬用字元,但它只能用來代表一個字元。將它們與「LIKE」搭配使用,可以用來對字串內容進行模糊比對,這與「=」的精確比對是不同的。
|
用法:SELECT realname LIKE '陳%' FROM student
|
說明:找出姓「陳」的所有學生
|
用法:SELECT num LIKE '_568' FROM product
|
說明:找出編號(共 4 碼)末 3 碼為「568」的所有產品
|
ASCII(str)
|
用法:SELECT ASCII('dx')
|
說明:傳回 str 字串中最左邊字元的 ASCII 碼
|
CONCAT(s1,
s2, .....)
|
用法:SELECT CONCAT('My', 'S', 'QL')
|
說明:將字串 s1, s2, ... 全部連接成一個字串
|
LENGTH(str) OCTET_LENGTH(str)
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
|
用法:SELECT LENGTH('陳信宏123') SELECT OCTET_LENGTH('陳信宏123')
SELECT CHAR_LENGTH('陳信宏123') SELECT CHARACTER_LENGTH('陳信宏123')
|
說明:傳回 str 字串的長度。前兩者傳回 9,後兩者傳回 6(因為每個中文字均算 1)
|
LOCATE(s1,s2) INSTR(s2,
s1)
|
用法:SELECT INSTR('foobarbar', 'bar')
|
說明:傳回 s1 字串在 s2 字串第一次出現的位置是第幾個字
|
LEFT(str,
len)
|
用法:SELECT LEFT('foobarbar', 5)
|
說明:從字串 str 的左邊取 len
長度的字串傳回
|
RIGHT(str,
len)
|
用法:SELECT RIGHT('foobarbar', 5)
|
說明:從字串 str 的右邊取 len
長度的字串傳回
|
SUBSTRING(str,
pos, len)
MID(str,
pos, len)
|
用法:SELECT SUBSTRING('Quadratically', 5,
6)
|
說明:從字串 str 的第 pos 位置開始,取出 len 長度的字串傳回
|
LTRIM(str)
|
用法:SELECT LTRIM(' barbar')
|
說明:移除字串 str 開頭的空白
|
RTRIM(str)
|
用法:SELECT RTRIM('barbar ')
|
說明:移除字串 str 結尾的空白
|
TRIM([[BOTH | LEADING |
TRAILING] [remstr] FROM] str)
|
用法:SELECT TRIM(' bar ')
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx')
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx')
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz')
|
說明:移除 str 字串中與 remstr
相同的字串,BOTH 是開頭與結尾都移除,LEADING 是移除開頭,TRAILING 是移除結尾,預設是 BOTH。
|
REPLACE(str,
from_str, to_str)
|
用法:SELECT REPLACE('www.mysql.com', 'w', 'Ww')
|
說明:將 str 字串中,所有的 from_str
都替換成 to_str
|
LCASE(str) LOWER(str)
|
用法:SELECT LCASE('QUADRATICALLY')
|
說明:將 str 中的字串轉成小寫
|
UCASE(str) UPPER(str)
|
用法:SELECT UCASE('Hej')
|
說明:將 str 中的字串轉成大寫
|
日期與時間運算
|
DAYOFWEEK(date)
|
用法:SELECT DAYOFWEEK('1998-02-03')
|
說明:傳回日期
date 的星期索引(1:週日,2:週一,... 7:週六)
|
NOW( )
|
用法:SELECT NOW()
|
說明:以 YYYY-MM-DD HH:MM:SS 或 YYYYMMDDHHMMSS 的格式傳回目前的時間
|
UNIX_TIMESTAMP( ) 或 UNIX_TIMESTAMP(date)
|
用法:
|
說明:若指定 date,則傳回當時的 Unix timestamp;否則,傳回目前的 Unix timestamp。
|
補充:Unix timestamp 是一個正整數,代表從「1970-01-01 00:00:00 GMT」起的秒數
|