【MySQL必知必會(huì)11】數(shù)據(jù)處理函數(shù)

1、函數(shù)


與其他計(jì)算機(jī)語(yǔ)言一樣,sql支持利用函數(shù)來(lái)處理數(shù)據(jù)。函數(shù)一般是在數(shù)據(jù)上執(zhí)行的,他給數(shù)據(jù)的轉(zhuǎn)換和處理提供了方便。

*注:函數(shù)沒(méi)有sql的可移植性強(qiáng)(不同數(shù)據(jù)庫(kù)管理系統(tǒng)的兼容性較差)

2、使用函數(shù)


大多數(shù)sql實(shí)現(xiàn)支持以下函數(shù):

>用于處理文本串的(如刪除或填充值,轉(zhuǎn)換值為大寫(xiě)或小寫(xiě))文本函數(shù)

>用于在數(shù)值數(shù)據(jù)上進(jìn)行算術(shù)操作(如返回絕對(duì)值,進(jìn)行代數(shù)運(yùn)算)的數(shù)值函數(shù)

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

2.1、文本處理函數(shù)

以Upper()函數(shù)為例:

輸入:

select vend_name, Upper(vend_name) AS vend_name_upcase

from vendors order by vend_name;

輸出:

分析:正如所見(jiàn),Upper()將文本轉(zhuǎn)換為大寫(xiě),因此本例中每個(gè)供應(yīng)商都列出兩次,第一次為vendors表中存儲(chǔ)的值,第二次為轉(zhuǎn)換成大寫(xiě)后的值。

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

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

Insert(str,x,y,instr):將字符串str從第x位置開(kāi)始,y個(gè)字符長(zhǎng)的子串替換為字符串instr

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

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

Lower(str):將字符串str中所有字符變?yōu)樾?xiě)

Upper(str):將字符串str中所有字符變?yōu)榇髮?xiě)

Lpad(str,n,padstr):用字符串padstr對(duì)str最左邊進(jìn)行填充,直到str長(zhǎng)度為n個(gè)字符長(zhǎng)度

Rpad(str,n,padstr):用字符串padstr對(duì)str最右邊進(jìn)行填充,直到str長(zhǎng)度為n個(gè)字符長(zhǎng)度

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

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

Repeat(str,x):返回str重復(fù)x的次數(shù)

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

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

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

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

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

Soundex():返回串的SOUNDEX值

其中Soundex需要做進(jìn)一步解釋?zhuān)?/p>

soundex是一個(gè)將任何文本串轉(zhuǎn)換為描述其語(yǔ)音表示的字母數(shù)字模式的算法。soundex考慮了類(lèi)似的發(fā)音字符和音節(jié),使得能對(duì)串進(jìn)行發(fā)音比較而不是字母比較。

使用例子如下:

customers表中有一個(gè)顧客Coyote Inc.,其聯(lián)系名為Y.Lee。但是如果輸入錯(cuò)誤,此聯(lián)系名實(shí)際為Y.Lie,怎么辦,顯然按正確吧聯(lián)系名搜索不會(huì)返回?cái)?shù)據(jù),如下所示:


現(xiàn)在使用soundex函數(shù)進(jìn)行搜索,結(jié)果如下:

在這個(gè)例子中,where子句使用soundex()函數(shù)來(lái)轉(zhuǎn)換cust_contact列值和搜索串為他們的soundex值,因?yàn)閅.Lee和Y.Lie發(fā)音相似,所以他們的soundex值匹配,因此where子句正確的過(guò)濾出了所需的數(shù)據(jù)。

2.2、日期和時(shí)間處理函數(shù)

日期和時(shí)間采用相應(yīng)的數(shù)據(jù)類(lèi)型和特殊的格式存儲(chǔ),以便能快速和有效的排序或過(guò)濾,并節(jié)省物理存儲(chǔ)空間。

一般應(yīng)用程序不使用用來(lái)存儲(chǔ)日期和時(shí)間的格式,因此日期和時(shí)間函數(shù)總是被用來(lái)讀取、統(tǒng)計(jì)和處理這些值。由于這個(gè)原因,日期和時(shí)間函數(shù)在MySQL語(yǔ)言中具有重要的作用。

常用的日期和時(shí)間處理函數(shù):

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

AddTime():增加一個(gè)時(shí)間(時(shí)、分等)

CurDate():返回當(dāng)前日期

CurTime():返回當(dāng)前時(shí)間

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

DateDiff():計(jì)算兩個(gè) 日期之差

Date_add():高度靈活的日期運(yùn)算函數(shù)

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

Day():返回一個(gè)日期的天數(shù)部分

DayOfWeek():對(duì)于一個(gè)日期,返回對(duì)應(yīng)的星期幾

Hour():返回一個(gè)時(shí)間的小時(shí)部分

Minute():返回一個(gè)時(shí)間的分鐘部分

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

Now():返回當(dāng)前日期和時(shí)間

Second():返回一個(gè)時(shí)間的秒部分

Time():返回一個(gè)日期時(shí)間的時(shí)間部分

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

2.3、數(shù)值處理函數(shù)

常用的數(shù)值處理函數(shù):

Abs():返回一個(gè)數(shù)的絕對(duì)值

Cos():返回一個(gè)角度的余弦

Exp():返回一個(gè)數(shù)的指數(shù)值

Mod():返回除操作余數(shù)

Pi():返回圓周率

Rand():返回一個(gè)隨機(jī)數(shù)

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

Sqrt():返回一個(gè)數(shù)的平方根

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

**********書(shū)山有路,學(xué)海無(wú)涯,無(wú)數(shù)個(gè)孤獨(dú)的夜晚,需要一點(diǎn)小小的成就感!**********

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,548評(píng)論 0 13
  • 在挖掘分析的過(guò)程當(dāng)中對(duì)字符串的處理是極為重要的,且出現(xiàn)也較為頻繁,R語(yǔ)言作為當(dāng)前最為流行的開(kāi)源數(shù)據(jù)分析和可視化平臺(tái)...
    果果哥哥BBQ閱讀 6,150評(píng)論 0 8
  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 8,059評(píng)論 5 115
  • 尼采是個(gè)個(gè)人主義者,他批判過(guò)去的哲學(xué),批判人們崇尚的美德,批判人們的生活。但是他最關(guān)注的就是生命的意義,人生的意義...
    海林_JS閱讀 554評(píng)論 0 0
  • 公司有個(gè)新來(lái)的小姑娘小玉,其實(shí)也不小了,剛剛結(jié)婚,看起來(lái)笨笨的,或許剛剛結(jié)婚的緣故,對(duì)誰(shuí)都傻呵呵的笑。她來(lái)公司時(shí)是...
    稷下簡(jiǎn)單哥閱讀 283評(píng)論 0 0

友情鏈接更多精彩內(nèi)容