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