mysql常用函数 [转]
算數(shù)運(yùn)算子
+, -, *, /
除于 0 會(huì)等于 NULL。
比較運(yùn)算子
任何東西跟 NULL 比較會(huì)等于 NULL。
比較字符串通常不需要注意大小寫,如果要比較大小寫,用 BINARY 關(guān)鍵詞。
程序代碼:
SELECT *
FROM department
WHERE name = BINARY 'marketing';
程序代碼:
=????? 相等
!= 或 <>??? 不相等
<????? 小于
<=???? 小或等于
>????? 大于
>=???? 大或等于
n BETWEEN
min AND max??? 測試范圍
n IN (set)??? set 可以是一系列的數(shù)值或子查詢。
<=>??? 可以比較 NULL,如果比較兩個(gè) NULL 會(huì)傳回 1。
n IS NULL??? 測試 n 是否 NULL。
ISNULL(n)??? 測試 n 是否 NULL。
邏輯運(yùn)算子
傳回的值有 1 (true), 0 (false, 或 NULL。
任何不是 0 或不是 NULL 的值都是 true。
程序代碼:
AND 或 &&?n && m?? ??? 和
?????????? ??? true && true = true
?????????? ??? false && anything = false
?????????? ??? 其它會(huì)等于 NULL
OR 或 ||?? n || m?? ??? 或
?????????? ??? true || anything = true
?????????? ??? NULL || false = NULL
?????????? ??? NULL || NULL = NULL
?????????? ??? false || false = false
NOT 或 !??? NOT n???? 不是
?????????? ??? !true = false
?????????? ??? !false = true
?????????? ??? !NULL = NULL
XOR??? n XOR m????? 不包含的 OR
?????????? ??? true XOR true = false
?????????? ??? true XOR false = true
?????????? ??? false XOR true = true
?????????? ??? NULL XOR n = NULL
?????????? ??? n XOR NULL = NULL
控制流向的函式
IF (e1, e2, e3)
如果 e1 是 true,IF 會(huì)傳回 e2,不然會(huì)傳回 e3。
CASE value
WHEN [compare-value] THEN result
[WHEN [compare-value] THEN result ...]
[ELSE result]
END
或是
CASE
WHEN [condition] THEN result
[WHEN [condition] THEN result ...]
[ELSE result]
END
程序代碼:
SELECT workdate, CASE
??? WHEN workdate < 2000-01-01 THEN "archived"
??? WHEN workdate < 2003-01-01 THEN "old"
??? ELSE "current"
??? END
FROM assignment;
字符串函式
concat(s1, s2, ...) - 連接字符串 s1 和 s2...
conv(n, original_base, new_base) - 轉(zhuǎn)換數(shù)字 n 從本來的 base 到新的 base
length(s) - 找字符串的長度
load_file(filename) - 依照字符串傳回檔案的內(nèi)容
locate(needle, haystack, position) - 傳回 needle 字符串的開始位置,在 haystack 字符串里,從 position 開始
lower(s) and upper(s) - 轉(zhuǎn)換 s 到小寫或大寫
quote(s) - 跳脫 s 字符串,讓它可以安全輸入數(shù)據(jù)庫
replace(target, find, replace) - 傳回 target 字符串,將 find 字符串覆蓋成 replace 字符串
soundex(s) - 傳回跟 s 類似的 soundex 字符串。soundex 是字符串的發(fā)音
substring(s, position, length) - 傳回字符串里的字符串,s 是本來的字符串,position 是開始的位置,length 是傳回的字?jǐn)?shù)
trim(s) - 移除開頭跟字尾的空格符。也可以用 rtrim() 或 ltrim()
字符串比較的函式
LIKE - 利用通配字符來進(jìn)行比較
RLIKE - 利用正規(guī)表示法來進(jìn)行比較
STRCMP - 比較字符串,類似 C 里面的 strcmp()
MATCH - 進(jìn)行 full-text 比較
利用通配字符來進(jìn)行比較
程序代碼:
SELECT *
FROM department
WHERE name LIKE '%research%';
% 會(huì)吻合任何字?jǐn)?shù),包括 0。
_ 會(huì)吻合單一字?jǐn)?shù), _at 會(huì)吻合 cat, mat, bat...
利用正規(guī)表示法來進(jìn)行比較
RLIKE 可以用來吻合正規(guī)表示法。
'cat' 會(huì)吻合 'catacomb' 和 'the cat sat on the mat'。
如果只要吻合 'cat',用 '^cat$'。
^ 表示在吻合的字符串開頭是 'cat'。
$ 表示在吻合的字符串最后是 'cat'。
. 可以用來代表通配字符,'.at' 會(huì)吻合 'cat', 'bat', 'mat'。
* 表示字符可以出現(xiàn)零或多次,'n*' 會(huì)吻合 '', 'nn', 'nnn'。
() 會(huì)歸類字符,'(cat)*' 會(huì)吻合 '', 'cat', 'catcat', 'catcatcat'。
.* 會(huì)吻合任何字或字符串。
+ 表示在他之后的字或字符串會(huì)重復(fù)一或多次。
? 表示吻合一或零次。
列出特定的范圍,'(cat)(2,4)' 會(huì)吻合 'catcat', 'catcatcat', 和 'catcatcatcat'。
[] 可以列出一系列的文字,'[a-z]' 會(huì)吻合任何字母,'[a-z]*' 會(huì)吻合任何數(shù)量的字母。
文字類別,[[:alnum:]] 會(huì)吻合任何字母和數(shù)字的文字。
程序代碼:
SELECT *
FROM department
WHERE name RLIKE 'an';
這會(huì)吻合全部有包括 'an' 的部門。
用 STRCMP() 來比較字符串
STRCMP(s1, s2)
如果字符串相同會(huì)傳回 0,-1 如果 s1 比 s2 小 (s1 比 s2 早出現(xiàn))。
1 如果 s1 比 s2 大 (s1 比 s2 晚出現(xiàn))。
程序代碼:
SELECT STRCMP('cat', 'cat');
// 傳回 0
SELECT STRCMP('cat', 'dog');
// 傳回 -1
SELECT STRCMP('cat', 'ant');
// 傳回 1
數(shù)字函式
| abs(n) | 傳回 n 的正數(shù) |
| ceiling(n) | n rounded up to the nearest integer |
| floor(n) | n rounded down to the nearest integer |
| mod(n,m) 和 div | 這兩個(gè)函式會(huì)將 n 除于 m。div 傳回商數(shù),mod() 會(huì)傳回剩余數(shù)。 |
| power(n,m) | n to the power of m |
| rand(n) | 傳回 0 到 1 的隨意數(shù)。n 可以不提供,如果提供會(huì)用來產(chǎn)生隨意數(shù)。 |
| round(n[,d]) | n rounded to the nearest integer. if supply d, n will be rounded to d decimal places. |
| sqrt(n) | 傳回 n 的平方 |
mod() 可以是 mod(9,2) 或 9 mod 2 或 9 % 2。
div 只能用 9 div 2。
程序代碼:
SELECT 9 mod 2;
// 傳回 1
SELECT 9 div 2;
// 傳回 4
日期和時(shí)間函式
adddate(date, INTERVAL n type) 和 subdate(date, INTERVAL n type)
這些函式可以用來增加和減少日期。從 date 的日期開始計(jì)算,然后增加或減少 INTERVAL 后的日期范圍。
你必須提供 n 和他的類型。類型可以是 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE:SECOND (m:s),
HOUR:MINUTE (h:m), DAY_HOUR(d h), YEAR_MONTH (y-m), HOUR_SECOND (h:m:s), DAY_MINUTE (d h:m),
DAY_SECOND (d h:m:s)。
curdate(), curtime(), now()
這些函式會(huì)傳回目前的日期,目前的時(shí)間,還有時(shí)間和日期。
date_format(date, format) 和 time_format(time, format)
這些可以用來改變?nèi)掌诤蜁r(shí)間的格式。
你必須提供格式的字符串,譬如說 date_format(workdate, '%W %D of %M, %Y'),
這會(huì)給你 'Monday 16th of June, 2003)。
全部可用的格式請看 MySQL 的手冊。
dayname(date)
傳回日期的名稱,例如 Monday。
extract(type FROM date)
傳回 date 的日期,譬如說 YEAR,他就會(huì)傳回那個(gè)日期的年數(shù)。
函式可用的類型跟 adddate() 和 subdate() 的類型相同。
unix_timestamp([date])
傳回目前的 Unix 時(shí)間。如果跟 date 一起使用,傳回的日期會(huì)從 date 的日期開始計(jì)算。
范例:
程序代碼:
SELECT adddate("1999-01-01", INTERVAL "1-6" YEAR_MONTH);
// 傳回 2000-07-01
SELECT unix_timestamp(adddate("1999-01-01", INTERVAL "1-6" YEAR_MONTH);
// 傳回 962373600
可以用 PHP 的 date() 函式來將 Unix 的時(shí)間格式化。
cast 函式
cast 可以用來改變類型,用 cast() 和 convert() 函式。
兩個(gè)函式相同,但是不同的語法構(gòu)造。
cast(expression AS type)
convert(expression, type)
cast() 是依照 ANSI 的規(guī)格,convert() 是依照 ODBC 的規(guī)格。
類型可以是 BINARY, CHAR, DATE, DATETIME, SIGNED (INTEGER), 和 UNSIGNED (INTEGER)。
通常 MySQL 會(huì)自動(dòng)幫你改變類型。
其它函式
benchmark(count, expression)
這個(gè)函式是用來測試查詢的速度,只會(huì)傳回 0 值。
encrypt(s[,salt])
將 s 加密用 Unix 的加密系統(tǒng)。salt 字符串是兩個(gè)字符的字符串,可以不用。
如果沒有 crypt 功能,像在 Windows 系統(tǒng),這個(gè)函式會(huì)傳回 NULL。
found_rows()
傳回字段的數(shù)量,如果沒有用 LIMIT。
只有在 SELECT 里使用 SQL_CALC_FOUND_ROWS 才能用這個(gè)函式。
last_insert_id()
傳回最后產(chǎn)生的 AUTO_INCREMENT 值。
md5(s)
傳回 128bit MD5 的加密字符串。
password(s)
計(jì)算 s 的密碼,不建議用這個(gè)函式來儲(chǔ)存密碼。
用于 GROUP BY 的函式
這些還是專門為了 GROUP BY 而寫的。
avg(column) - 傳回字段的平均值
count(column) - 傳回字段的數(shù)量
min(column) - 傳回字段的最小值
max(column) - 傳回字段的最大值
std(column) - 傳回字段的標(biāo)準(zhǔn)差
sum(column) - 傳回字段的總數(shù)
轉(zhuǎn)載于:https://www.cnblogs.com/tuyile006/archive/2008/08/21/1273340.html
總結(jié)
以上是生活随笔為你收集整理的mysql常用函数 [转]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Array.ForEach的委托方法
- 下一篇: MSSQL经典语句