【MySQL必知必會11】數據處理函數

1、函數


與其他計算機語言一樣,sql支持利用函數來處理數據。函數一般是在數據上執行的,他給數據的轉換和處理提供了方便。

*注:函數沒有sql的可移植性強(不同數據庫管理系統的兼容性較差)

2、使用函數


大多數sql實現支持以下函數:

>用於處理文本串的(如刪除或填充值,轉換值爲大寫或小寫)文本函數

>用於在數值數據上進行算術操作(如返回絕對值,進行代數運算)的數值函數

>用於處理日期和時間值並從中提取特定成分(如:返回兩個日期之差,檢查日期有效性等)的日期和時間函數

2.1、文本處理函數

以Upper()函數爲例:

輸入:

select vend_name, Upper(vend_name) AS vend_name_upcase

from vendors order by vend_name;

輸出:

分析:正如所見,Upper()將文本轉換爲大寫,因此本例中每個供應商都列出兩次,第一次爲vendors表中存儲的值,第二次爲轉換成大寫後的值。

常用的文本處理函數如下(一下str及Sx均可取表的列名):

Concat(S1,S2,...Sn):連接S1,S2,...Sn爲一個字符串

Insert(str,x,y,instr):將字符串str從第x位置開始,y個字符長的子串替換爲字符串instr

Left(str,x):返回字符串str最左邊的x個字符

Right(str,x):返回字符串str最右邊的x個字符

Lower(str):將字符串str中所有字符變爲小寫

Upper(str):將字符串str中所有字符變爲大寫

Lpad(str,n,padstr):用字符串padstr對str最左邊進行填充,直到str長度爲n個字符長度

Rpad(str,n,padstr):用字符串padstr對str最右邊進行填充,直到str長度爲n個字符長度

Ltrim(str):去掉字符串左側的空格

Rtrim(str):去掉字符串右側的空格

Repeat(str,x):返回str重複x的次數

Replace(str,a,b):用字符串b替換字符串str中所有出現的字符串a

Strcmp(s1,s2):比較字符串s1和s2

Trim(str):去掉字符串行尾和行頭的空格

Substring(str,x,y):返回從字符串str x位置起y個字符長度的子串

Locate(str,x):找出str字符串的x子字符串(可以與count()結合使用)

Soundex():返回串的SOUNDEX值

其中Soundex需要做進一步解釋:

soundex是一個將任何文本串轉換爲描述其語音表示的字母數字模式的算法。soundex考慮了類似的發音字符和音節,使得能對串進行發音比較而不是字母比較。

使用例子如下:

customers表中有一個顧客Coyote Inc.,其聯繫名爲Y.Lee。但是如果輸入錯誤,此聯繫名實際爲Y.Lie,怎麼辦,顯然按正確吧聯繫名搜索不會返回數據,如下所示:


現在使用soundex函數進行搜索,結果如下:

在這個例子中,where子句使用soundex()函數來轉換cust_contact列值和搜索串爲他們的soundex值,因爲Y.Lee和Y.Lie發音相似,所以他們的soundex值匹配,因此where子句正確的過濾出了所需的數據。

2.2、日期和時間處理函數

日期和時間採用相應的數據類型和特殊的格式存儲,以便能快速和有效的排序或過濾,並節省物理存儲空間。

一般應用程序不使用用來存儲日期和時間的格式,因此日期和時間函數總是被用來讀取、統計和處理這些值。由於這個原因,日期和時間函數在MySQL語言中具有重要的作用。

常用的日期和時間處理函數:

AddDate():增加一個日期(天、周等)

AddTime():增加一個時間(時、分等)

CurDate():返回當前日期

CurTime():返回當前時間

Date():返回日期時間的日期部分

DateDiff():計算兩個 日期之差

Date_add():高度靈活的日期運算函數

DateFormat():返回一個格式化的日期函數或者時間串

Day():返回一個日期的天數部分

DayOfWeek():對於一個日期,返回對應的星期幾

Hour():返回一個時間的小時部分

Minute():返回一個時間的分鐘部分

Month():返回一個日期的月部分

Now():返回當前日期和時間

Second():返回一個時間的秒部分

Time():返回一個日期時間的時間部分

Year():返回一個日期的年部分

2.3、數值處理函數

常用的數值處理函數:

Abs():返回一個數的絕對值

Cos():返回一個角度的餘弦

Exp():返回一個數的指數值

Mod():返回除操作餘數

Pi():返回圓周率

Rand():返回一個隨機數

Sin():返回一個角度的正弦

Sqrt():返回一個數的平方根

Tan():返回一個角的正切

**********書山有路,學海無涯,無數個孤獨的夜晚,需要一點小小的成就感!**********

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章