/* 函數處理數據的一個問題就是每個DBMS都有特定的函數,在不同的DBMS中,各個函數的名稱和語法可能極其不同這意味著特定SQL實現編寫的代碼在其他視線中可能不正常*/ -- 在MySQL中: /* 提取字元串的組成部分 SUBSTRING()數據類型轉換 CONVERT()取當前日期 CURDA ...
/*
函數處理數據的一個問題就是每個DBMS都有特定的函數,
在不同的DBMS中,各個函數的名稱和語法可能極其不同
這意味著特定SQL實現編寫的代碼在其他視線中可能不正常
*/
-- 在MySQL中:
/* 提取字元串的組成部分 SUBSTRING()
數據類型轉換 CONVERT()
取當前日期 CURDATE()
*/
#如果使用函數,要註意註釋,因為不同的SQL伺服器函數含義不同
-- 大多數DBMS支持的函數
/*
1.處理文本字元串(如刪除或填充值,轉換值為大寫或小寫)的文本函數
2.用於在數值數據上進行算術操作(如返回絕對值,進行代數運算)的數值函數
3.用於處理日期和時間值並從這些之中提取特定成分(如返回兩個日期之差,檢查日期有效性)的日期和時間函數
4.返回DBMS正使用的特殊信息(如返回用戶登錄信息)的系統函數
*/
-- 文本處理函數 (UPPER())
SELECT vend_name,UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;
/*
常用的文本處理函數:
LEFT()(或使用子字元串函數) 返回字元串左邊的字元
LENGTH()(也使用DATALENGTH()或LEN()) 返回字元串的長度
LOWER()(Access使用LCASE()) 將字元串轉換為小寫
LTRIM() 去掉字元串左邊的空格
RIGHT()(或使用子字元串函數) 返回字元串右邊的函數
RTRIM() 去掉字元串右邊的空格
SOUNDEX() 返回字元串的SOUNDEX值
UPPER()(Access使用UCASE()) 將字元串轉換為大寫
*/
#SOUNDEX是一個將任何文本串轉換為描述其語音表示的字母數字模式的演算法
/*考慮了累的發音字元和音節,使得能對字元串進行發音比較而不是字母比較*/
------------------------------
-- 對比
SELECT cust_name,cust_contact
FROM Customers
WHERE cust_contact = 'Michael GREEN';
#輸出結果沒有值原因是信息錄入的時候輸入錯了,聯繫名實際上應該是Michael Green
SELECT cust_name,cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
-- 日期和時間處理函數(以特殊的格式存儲,每種DBMS都有自己的特殊形式)
/* 由於應用程式一般不使用日期和時間的存儲格式,所以日期和時間函數總是用來讀取、統計和處理這些值。它們的可移植性最差*/
#MySQL中使用名為YEAR()的函數從日期中提取年份
SELECT order_num
FROM Orders
WHERE YEAR(order_date) = 2012;
-- 數值處理函數(僅處理數值數據,主要用於代數、三角或幾何運算)
/*
常用數值處理函數:
ABS() 返回一個數的絕對值
COS() 返回一個角度的餘弦
EXP() 返回一個數的指數值
PI() 返回圓周率
SIN() 返回一個角度的正弦
TAN() 返回一個角度的正切
*/