? 1、函數(shù) ??
?????? 與其他大多數(shù)計算機語言一樣,SQL支持利用函數(shù)來處理數(shù)據(jù)。函數(shù)一般是在數(shù)據(jù)上執(zhí)行的,它給數(shù)據(jù)的轉(zhuǎn)換和處理提供了方便。
1.使用函數(shù):
(1)用于處理文本串(如刪除或填充值,轉(zhuǎn)換值為大寫或小寫)的文本函數(shù)
(2)用于在數(shù)值數(shù)據(jù)上進行算術(shù)操作(如返回絕對值,進行代數(shù)運算)的數(shù)值函數(shù)。
(3)用于處理日期和時間值并從這些值中提取特定成分(例如,返回兩個日期之差,檢查日期有效性等)的日期和時間函數(shù)。
(4)返回DBMS正使用的特殊信息(如返回用戶登錄信息,檢查版本細節(jié))的系統(tǒng)函數(shù)。
??????????????????????????????????? 文本處理函數(shù)
?? SELECT vend_name,Upper(vend_name) AS vend_upcase FROM vendors ORDER BY vend_name;
本例子中vend_name出現(xiàn)了兩次是為了存儲值,第二次是作為列(vend_name_upcase)轉(zhuǎn)換為大寫。
這里 vend_name 在原始列中本身是小寫的,現(xiàn)在由于我們使用了文本函數(shù)的原因,他將變成大寫。
這里列出常用的文本處理函數(shù):
函數(shù)?????????????????????????????????????? 說明
Left()????????????????????????????????????? 返回串左邊的字符
Length()??????????????????????????????? 返回串的長度
Locate()??????????????????????????????? 找出串的一個字串
Lower()????????????????????????????? ?? 將串轉(zhuǎn)換為小寫
LTrim()????????????????????????????????? 去掉串左邊的空格
Right()?????????????????????????????? ?? 去掉串右邊的字符
RTrim()???????????????????????? ? ? ? ? 去掉串右邊的空格
Soundex()??????????????????????????? 返回串的SOUNDEX值(自行百度)###是一個將任何文本串轉(zhuǎn)化為描述其語音表示的字母數(shù)字模式的算法(超強大?。?!Soundex()能夠匹配所有發(fā)音類似的字符)
SubString()????????????????????????? 返回字串的字符
Upper()??????????????????????????????? 將串轉(zhuǎn)換為大寫
這里SOUNDEX需要做進一步解釋:SOUNDEX是將任何文本串轉(zhuǎn)換為描述其語音表示的模式算法,SOUNDEX考慮了類似的發(fā)音字符和音節(jié)。
舉個例子吧:
有個顧客的聯(lián)系名為Y.Lee,但這是輸入錯誤,此時應(yīng)該聯(lián)系Y.Lie才對,那我們該怎么辦呢?
SELECT cust_name, cust_contact FROM customers WHERE Soundex(cust_contact) = Soundex('Y.Lie');
這樣就能檢索出Y.Lee出來了。
???????????????????????????????? 日期和時間處理函數(shù)
應(yīng)用程序不適用用來存儲日期和時間的格式,因此日期和時間函數(shù)總是被用來讀取、統(tǒng)計和處理這些值。由于這個原因,日期和時間處理函數(shù)格外重要!
我們一定要注意MySQL的日期格式,無論什么時候制定一個日期,必須完成格式y(tǒng)yyy-mm-dd 比如 2005-09-04?
??????? SELECT cust_id, order_num FROM orders WHERE Date(order_date) = '2005-09-01';
函數(shù)??????????????????????????????????? 說明
AddDate() ??????????????? ? ? ? ? 增加一個日期(天、周等)
AddTime() ????????????? ? ? ???? 增加一個時間(時、分等)
CurDate() ?????????????????? ? ?? 返回當前日期
CurTime() ???????????????? ? ? ?? 返回當前時間
Date() ?????????????????????? ? ???? 返回日期時間的日期部分
DateDiff() ??????????????????????? 計算兩個日期之差
Date_Add() ??????????????????? 高度靈活的日期運算函數(shù)
Date_Format() ?????????????? 返回一個格式化的日期或時間串
Day() ????????????????????????????? 返回一個日日期的天數(shù)部分
DayOfWeek() ??????????????? 對于一個日期,返回對應(yīng)的星期幾
Hour() ??????????????????????????? 返回一個時間的小時部分
Minute() ?????????????????? ? ?? 返回一個時間的分鐘部分
Month() ????????????? ? ? ? ? ?? 返回一個日期的月部分
Now() ??????????????????????????? 返回點當前的日期和時間
Second() ???????????????????? 返回一個時間的秒部分
Time????????????????????? ? ? ?? 返回一個日期時間的時間部分
Year() ????????????????????????? 返回一個日期的年部分
??????????????????????????? 數(shù)值處理函數(shù)
Abs() ? 返回一個數(shù)的絕對值;
Cos() ? 返回一個角度的余弦
Sin() ? ?返回一個角度的正弦
Tan() ? 返回一個角度的正切
Exp() ? 返回一個數(shù)的指數(shù)值
Mod() ?返回除操作的余數(shù)
Pi() ? ? ? 返回圓周率
Rand() ?返回一個隨機數(shù)
Sqrt() ? 返回一個數(shù)的平方根