=============================================================
標題:SQL語句練習-使用函數
備註:SQL SERVER 2000
日期:2011.4.5
姓名:朱銘雷
=============================================================
SQL支持利用函數來處理數據,這些函數也都是非常高效的。不過,對於不同的DBMS,它們可能支持不同的函數,這會給SQL代碼的可移植性帶來問題。
文本處理函數
UPPER函數將文本字串轉換爲大寫。
常用的文本處理函數
SOUNDEX函數
考慮了類似的發音字符和音節,能對串進行發音比較而不是字母比較。
WHERE字句使用SOUNDEX函數轉換cust_contact列值和搜索串爲它們的SOUNDEX值。因爲Michael Green和Michelle Green發音相似,所以它們的SOUNDEX值匹配,因此WHERE字句正確的過濾出了所需數據。
日期和時間處理函數
在各個DBMS中很不一致,可移植性最差。對於特定的DBMS,需要查詢相應的文檔來確定它具體支持的時間日期函數。
DATEPART函數返回日期的某一部分,第一個參數設置爲yy,表示從order_date列中返回年份。上述代碼檢索2004年的所有訂單。這是在SQL SERVER 2000上測試的,對於其他的DBMS,可能不支持,或者形式不一樣,或者參數不同。
DBMS通常會提供很多很有價值的日期時間函數,比如比較日期,執行基於日期的運算,選擇日期格式等函數,這要查閱相應DBMS的文檔。
數值處理函數
聚集函數
用於彙總數據並做相應計算
AVG函數
AVG函數用於求取某列的平均值,上述語句返回供應商DLL01的產品的平均價格。如果去掉最後的WHERE子句,則返回所有產品的平均價格。
COUNT函數
對錶中的行數計數
COUNT(*)對所有行計數,不管表列中是否包含控制NULL。
只對cust_email列中有值的行計數。
MAX函數
返回指定列中的最大值,忽略列值爲NULL的行。
返回Products表中最貴的物品的價格。
MIN函數
返回指定列中的最小值,忽略列值爲NULL的行。
返回Products表中最便宜的物品的價格。
SUM函數
返回指定列值的和,忽略列值爲NULL的行。
檢索所訂購物品的總數。
返回order_num爲20005的總的訂單金額。
DISTINCT參數
聚集不同值。
返回特定供應商提供的產品的平均價格,但此平均值只考慮各個不同的價格。
組合聚集函數
SELECT語句可以根據需要包含多個聚集函數。
SQL聚集函數表