MySQL數據庫學習筆記(五)----MySQL字符串函數、日期時間函數

1、常見字符串函數:編輯器

  • 一、CHAR_LENGTH  獲取長度(字符爲單位)ide

  • 二、FORMAT  格式化函數

  • 三、INSERT  替換的方式插入編碼

  • 四、INSTR  獲取位置spa

  • 五、LEFT/RIGHT  取左、取右code

  • 六、LENGTH   獲取長度(字節爲單位)orm

  • 七、LTRIM/RTRIM/TRIM 去空格(左/右/自定義)索引

  • 八、STRCMP  字符串比較rem

  • 九、CONCAT  字符串拼接文檔

  • 十、SUBSTRING  字符串截取

一、CHAR_LENGTH:獲取長度(字符爲單位)

CHAR_LENGTH()

解釋:返回值爲字符串str的長度,計算的單位爲字符(一箇中文也算一個字符)

舉例:

若是是查詢已知表格裏的字段長度,能夠這樣寫:

二、FORMAT

FORMAT(X,D)

解釋:將數字X的格式寫爲'#,###,###.##',以四捨五入的方式保留小數點後D位,並將結果以字符串的形式返回。若D爲0, 則返回結果不帶有小數點,或不含小數部分。

舉例:

三、INSERT:替換的方式插入

 (,pos,,newstr)

解釋:返回字符串str,從原str的pos位置開始,用字符串newstr來替換,替換的長度爲len。

若是pos超過字符串長度,則返回值爲原始字符串。假如len的長度超事後面字符串的長度,則從位置pos開始替換到字符串的結尾便可。

四個參數中若任何一個參數爲的值爲null,則整個函數的返回值爲NULL。

舉例:將smyh001替換爲smyh002

四、INSTR:查找子字符串的位置

INSTR(,substr)

解釋:返回字符串str中首次出現子字符串substr的位置。

舉例:

五、LEFT/RIGHT:字符串截取

  • 左截取:

(,)

解釋:返回字符串str中,從左邊開始算起的,前len個字符。

  • 右截取:

(,)

解釋:返回字符串str中,從右邊開始算起的,前len個字符。

六、LENGTH:求字符串長度(以字節爲單位)

LENGTH()

解釋:返回值爲字符串str的長度,單位爲字節。一個多字節字符算做多字節。這意味着對於一個包含五個2字節字符的字符串,LENGTH()的返回值爲10,而CHAR_LENGTH()的返回值則爲5。

注:

  • GBK  編碼中,一箇中文字符是2個字節。

  • UTF-8編碼中,一箇中文字符是3個字節,一個英文字符是2個字節。

七、LTRIM/RTRIM/TRIM 去空格(左/右/自定義):

  • 去掉左邊的空格:

()

解釋:返回字符串str,其引導空格字符被刪除。

  • 去掉中間的空格:

()

解釋:返回字符串str,其結尾空格字符被刪除。

  • 自定義去空格:

TRIM( )

注:大括號和中括號裏面的參數爲可選項,若是所有都加上的話,默認爲參數both。

解釋:將原字符串str去掉空格返回。只去開頭(leading)的空格,只去結尾(trailng)的空格,或者同時去掉(both)開頭和結尾的空格都行。若分類符BOTH、LEADIN或TRAILING中沒有一個是給定的,則假設爲BOTH。

TRIM( )

解釋:remstr關鍵字的做用是去掉指定字符。 即全部包含remstr的前綴和/或後綴將被刪除。未指定狀況下,即刪除空格。

官方文檔的舉例:

八、STRCMP判斷字符串是否相等

STRCMP(expr1,expr2)

解釋:判斷兩個字符串是否相等。若全部的字符串均相同,則返回0;若根據當前分類次序,第一個參數小於第二個,則返回-1;其它狀況返回1。功能和比較器相似。

注:字符串的大小是按照ANSI編碼來比較的。

舉例:

九、CONCAT:字符串拼接

CONCAT(str1,str2,...)

解釋:返回結果爲連將str一、str2···拼接以後產生的字符串。若有任何一個參數爲NULL ,則返回值爲 NULL。括號裏可能有一個或多個參數。 

若是全部參數均爲非二進制字符串,則結果爲非二進制字符串。若是自變量中含有任意一個二進制字符串,則結果爲一個二進制字符串。一個數字參數將自動轉化爲與之相等的二進制字符串格式。

若要避免這種狀況二進制的狀況出現,可以使用顯式類型 cast(str),將二進制的字符串轉換爲非二進制字符串。例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col)

舉例:(navicat編輯器會自動將二進制字符串轉換爲非二進制字符串)

十、SUBSTRING字符串截取

SUBSTRING(str,pos)SUBSTRING(str FROM pos)SUBSTRING(str,pos,len)SUBSTRING(str FROM pos FOR len)

解釋:不帶有len 參數的格式從字符串str返回一個子字符串,起始於位置 pos。帶有len參數的格式從字符串str返回一個長度同len字符相同的子字符串,起始於位置 pos。

使用FROM的格式爲標準SQL語法。

也可能對pos使用一個負值。倘若這樣,則子字符串的位置起始於字符串結尾的pos字符(也就是說,pos爲正時,從左邊算起;pos爲負時,從右邊算起)。 

官方文檔舉例以下:

 

2、常見日期時間函數:

  • 一、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH

  • 二、WEEKDAY

  • 三、YEAR、QUARTER、MONTH、

  • 四、HOUR、MINUTE、SECOND

  • 五、TO DAYS、FROM DAYS    

  • 六、CURDATE、CURTIME、NOW   獲取當前時間

一、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH

  • 求星期幾:(一週中的第幾天) 

DAYOFWEEK(date)

解釋:返回date(1=週日,2=週一, ...,7=週六)對應的工做日索引。即:date對應的範圍是1至7

  • 求一年中的某天是第幾天:(一年中的第幾天)

DAYOFYEAR(date)

返回date對應的一年中的天數,範圍是從1到366。

  • 求一個月中的某天是第幾天:(一個月的第幾天)

DAYOFMONTH(date)

返回date對應的該月日期,範圍是從1到31。注:DAY(date) 和DAYOFMONTH(date)的含義相同。

舉例:

二、WEEKDAY

  • 求星期幾:(一週的第幾天)

WEEKDAY(date)

解釋:返回date(0 = 週一, 1 = 週二, ... 6 = 週日)對應的工做日索引。即:date對應的範圍是0至6

注:DAYOFWEEK(date)和WEEKDAY(date)的功能相同,惟一的區別在於date對應的取值範圍。

三、 YEAR、QUARTER、MONTH

  • 求年份:

(date)

解釋:返回date對應的年份,範圍是從1000到9999。

  • 求季度:

QUARTER(date)

解釋:返回date對應的一年中的季度值,範圍是從1到4。

  • 求月份:(該月是一年當中的第幾個月)

MONTH(date)

解釋:返回date 對應的月份,範圍是從1到12。

舉例:

四、HOUR、MINUTE、SECOND

  • 求小時:

HOUR(time)

解釋:返回time 對應的小時數。對於日時值的返回值範圍是從0到23 。

  • 求分鐘:

MINUTE(time)

解釋:返回time對應的分鐘數,範圍是從0到59。

  • 求秒數:

SECOND(time)

解釋:返回time對應的秒數,範圍是從0到59。

舉例:

五、TO_DAYS、FROM_DAYS

  • 求某日期,一共經歷了多少天:(歷史長河中)

TO_DAYS(date)

解釋:給定一個日期date, 返回一個天數 (從年份0開始的天數 )。

  • 求歷史長河中的第某天,的日期:

FROM_DAYS(N)

解釋:給定一個天數 N, 返回一個DATE值。

使用FROM_DAYS()處理古老日期時,務必謹慎,他不用於處理陽曆出現前的天數(1582)。

六、CURDATE、CURTIME、NOW

  • 求當前的年月日:

CURDATE()

解釋:將當前日期按照'YYYY-MM-DD'或YYYYMMDD格式的值返回,具體格式根據函數用在字符串或是數字語境中而定。

舉例:

  • 求當前的時分秒:

CURTIME()

解釋:將當前時間以'HH:MM:SS'或HHMMSS的格式返回,具體格式根據函數用在字符串或是數字語境中而定。

舉例:

  • 求當前的年月日、時分秒:

NOW()

舉例:

注:若是now是放在語句當中,要看具體字段的格式要求。好比說,若是是放在date字段中,則只顯示年月日;若是是放在datetime字段中,則同時顯示年月日和時分秒。

相關文章
相關標籤/搜索