函數一般是在資料上執行的,它給資料的轉換和處理提供了方便。
大多數SQL實現支援以下型別的函數。
1.用於處理文字串(如刪除或填充值,轉換值為大寫或小寫)的文字函數。
2.用於在數值資料上進行算術操作(如返回絕對值,進行代數運算)的數值函數。
3. 用於處理日期和時間值並從這些值中提取特定成分(例如,返回兩個日期之差,檢查日期有效性等)的日期和時間函數。
4.返回DBMS正使用的特殊資訊(如返回使用者登入資訊,檢查版本細節)的系統函數。
常用的文書處理常式有:
對上述函數的SOUNDEX需要做進一步的解釋。SOUNDEX是一個將任何文字串轉換為描述其語音表示的字母數位模式的演演算法。SOUNDEX考慮了類似的發音字元和音節,使得能對串進行發音比較而不是字母比較。雖然SOUNDEX不是SQL概念,但MySQL(就像多數DBMS一樣)都提供對SOUNDEX的支援。
常用的日期和時間處理常式有:
MySQL使用的日期格式必須為yyyy-mm-dd。
數值處理常式一般主要用於代數、三角或幾何運算,因此沒有串或日期—時間處理常式的使用那麼頻繁。
常用的數值處理常式有:
-- Upper()將文字轉換為大寫
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;
-- 用函數soundex()對串進行發音比較
SELECT cust_name, cust_contact FROM customers WHERE SOUNDEX(cust_contact) = SOUNDEX ('Y lie');
-- 想要列中的日期部分,用date()函數
SELECT cust_id, order_num FROM orders WHERE DATE(order_date) = '2005-09-01';
-- 檢索2015年9月下的所有訂單
SELECT cust_id, order_num, order_date FROM orders WHERE DATE(order_date) BETWEEN '2005-09-01' AND '2005-09-30';
-- 檢索2015年9月下的所有訂單,方法2:一種不需要記住每個月中有多少天或不需要操心閏年2月的辦法
SELECT cust_id, order_num, order_date FROM orders WHERE YEAR(order_date) = 2005 AND MONTH(order_date) = 09;