<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0

           本文講述MySql5.x中最常用的一些函數(shù),包括控制流程函數(shù)、字符串函數(shù)、數(shù)值函數(shù)、日期和時間函數(shù),對不常用的函數(shù)略去不講,以便開發(fā)人員查閱。

    一.             控制流程函數(shù)

    1CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

    該語句用于在不同情況時,執(zhí)行不同的語句,實例如下:

    Eg1. SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

    輸出:true

    Eg2. SELECT CASE BINARY 'B' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;

           輸出:NULL

    2IF(expr1,expr2,expr3)

           如果expr1返回true,則該表達式返回expr2,否則返回expr3

    Eg1. SELECT IF(1<2,'yes ','no');

           輸出:'yes '

    Eg2. SELECT IF(STRCMP('test','test1'),'no','yes');

           上例中STRCMP(expr1, expr2)這個函數(shù)在expr1小于expr2時,返回-1,相等時返回0,其余的情況返回1,在上例中返回-1,因此上例的輸出為:'yes'

    3IFNULL(expr1,expr2)

           該函數(shù)在expr1NULL時,返回expr2,否則,返回expr1

    Eg1. SELECT IFNULL(1,0);

           輸出:1

    Eg2. SELECT IFNULL(NULL,10);

           輸出:10

    4NULLIF(expr1,expr2)

           如果expr1=expr2,則返回NULL,否則,返回expr1

    Eg1. SELECT NULLIF(1,1);

           輸出:NULL

    Eg2. SELECT NULLIF(3,4);

           輸出:3

    二.             字符串函數(shù)

    1.       ASCII(str)

    返回值為字符串str 的最左字符的數(shù)值。假如str為空字符串,則返回值為 0 。假如str NULL,則返回值為 NULL ASCII()用于帶有從 0255的數(shù)值的字符。

    Eg1. SELECT ASCII('2');

           輸出:50

    Eg2. SELECT ASCII('de');

           輸出:100

    2.       CONCAT(str1,str2,...) 

    返回結(jié)果為連接參數(shù)產(chǎn)生的字符串。如有任何一個參數(shù)為NULL ,則返回值為 NULL。或許有一個或多個參數(shù)。

    Eg1. SELECT CONCAT('Hello', ',', '阿蜜果');

           輸出:'Hello, 阿蜜果'

    Eg2. SELECT CONCAT('Hello', NULL, '阿蜜果');

           輸出:NULL

    3.       CONCAT_WS(separator,str1,str2,...)

    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。   第一個參數(shù)是其它參數(shù)的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數(shù)。如果分隔符為 NULL,則結(jié)果為 NULL。函數(shù)會忽略任何分隔符參數(shù)后的NULL值。

    Eg1. SELECT CONCAT_WS(',', 'Hello', '阿蜜果');

           輸出:'Hello, 阿蜜果'

    Eg. SELECT CONCAT_WS(',', 'Hello', NULL, '阿蜜果');

           輸出:'Hello, 阿蜜果'

    4.       INSERT(str,pos,len,newstr)

    返回字符串 str, 其子字符串起始于 pos位置和長期被字符串 newstr取代的len字符。 如果pos超過字符串長度,則返回值為原始字符串。 假如len的長度大于其它字符串的長度,則從位置pos開始替換。若任何一個參數(shù)為null,則返回值為NULL

    Eg1. SELECT INSERT('hello,Amigo', 7, 5, 'Locus');

           輸出:hello,Locus

    5.       INTER(str, substr)

    返回字符串 str中子字符串的第一個出現(xiàn)位置。

    Eg1. SELECT INSTR('hello,Amigo', 'Amigo');

           輸出:7

    6.       LENGTH(str)

    返回值為字符串str的長度,單位為字節(jié)。一個多字節(jié)字符算作多字節(jié)。

    Eg1. SELECT LENGTH('Amigo');

           輸出:5

    7.       LOWER(str)

    返回字符串 str以及所有根據(jù)最新的字符集映射表變?yōu)樾懽帜傅淖址?/span>

    Eg1. SELECT LOWER('AMIGO');

           UPPER(str)函數(shù)的用法與此類似,在此不再贅述。不過它是將字符串轉(zhuǎn)換為大寫的。

           輸出:amigo

    8.       LPAD(str, len, padstr)

    返回字符串 str, 其左邊由字符串padstr 填補到len字符長度。假如str 的長度大于len, 則返回值被縮短至len字符。

    Eg1. SELECT LPAD('hi',4,'!!');

           輸出:'!!hi'                      

    Eg2. SELECT LPAD('hi',1,'!!');

           輸出:'h'

           RPAD(…)函數(shù)用法與此類似,在此不再贅述。

    9.       REPEAT(str,count)

    返回一個由重復(fù)的字符串str 組成的字符串,字符串str的數(shù)目等于count count <= 0,則返回一個空字符串。若strcount NULL,則返回NULL

    Eg1. SELECT REPEAT('Amigo', 2);

           輸出:'AmigoAmigo'

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

           不帶有len 參數(shù)的格式從字符串str返回一個子字符串,起始于位置 pos。帶有len參數(shù)的格式從字符串str返回一個長度同len字符相同的子字符串,起始于位置 pos 使用 FROM的格式為標(biāo)準(zhǔn) SQL 語法。也可能對pos使用一個負(fù)值。假若這樣,則子字符串的位置起始于字符串結(jié)尾的pos 字符,而不是字符串的開頭位置。在以下格式的函數(shù)中可以對pos 使用一個負(fù)值。

    Eg1. SELECT SUBSTRING('hello,Amigo',6);       

           輸出:Amigo

    Eg2. SELECT SUBSTRING('hello,Amigo', 6, 4);

           輸出:Amig

    三.             數(shù)值函數(shù)

    1.       ABS(X)

    返回X的絕對值。

    Eg1. SELECT ABS(-5);

           輸出:5

    2.       FLOOR(X)

    返回不大于X的最大整數(shù)值

    Eg1. SELECT FLOOR(2.56);

           輸出:2

    Eg2. SELECT FLOOR(-2.56)

           輸出:-3

    3.       MOD(N,M) , N % M N MOD M

    模操作。返回N M除后的余數(shù)。

    Eg1. SELECT MOD(237, 10);

           輸出:7

    Eg2. SELECT 237 % 10;

           輸出:7

    Eg3. SELECT 237 MOD 10;

           輸出:7

    4.       POW(X, Y)POWER(X, Y)

    返回XY乘方的結(jié)果值。

    Eg1. SELECT POW(2, 3);

           輸出:8

    Eg2. SELECT POWER(2, 4)

           輸出:16

    5.       RAND()RAND(N)

    返回一個隨機浮點值 v,范圍在 0 1 之間 (, 其范圍為 0 ≤ v ≤ 1.0)。若已指定一個整數(shù)參數(shù) N,則它被用作種子值,用來產(chǎn)生重復(fù)序列。

    Eg1.  SELECT RAND(20);

           輸出:0.15888261251047

    Eg2. SELECT RAND();

           輸出:0.9233482386203

    若要在i ≤ R ≤ j 這個范圍得到一個隨機整數(shù)R ,需要用到表達式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 12 的范圍(包括712)內(nèi)得到一個隨機整數(shù), 可使用以下語句:

    SELECT FLOOR(7 + (RAND() * 6));

    6.       ROUND(X)ROUND(X,D)

    返回參數(shù)X, 其值接近于最近似的整數(shù)。在有兩個參數(shù)的情況下,返回 X ,其值保留到小數(shù)點后D位,而第D位的保留方式為四舍五入。若要接保留X值小數(shù)點左邊的D 位,可將 D 設(shè)為負(fù)值。

    Eg1. SELECT ROUND(-1.23);

           輸出:-1

    Eg2. SELECT ROUND(2.56);

           輸出:3

    7.       SQRT(X)

          返回非負(fù)數(shù)X的二次方根,如XNULL時,返回NULL

    Eg1. SELECT SQRT(4);

          輸出:2

    Eg2. SELECT SQRT(-4);

          輸出:NULL

    四.             日期和時間函數(shù)

    1. ADDDATE(date,INTERVAL expr type)ADDDATE(expr,days)

           當(dāng)被第二個參數(shù)的INTERVAL格式激活后, ADDDATE()就是DATE_ADD()的同義詞。相關(guān)函數(shù)SUBDATE()則是DATE_SUB()的同義詞。

    Eg1. SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);

           輸出:'1998-02-02'

    Eg2. SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);

           輸出:'1998-02-02'

    2. CURDATE()

           將當(dāng)前日期按照'YYYY-MM-DD' YYYYMMDD 格式的值返回,具體格式根據(jù)函數(shù)用在字符串或是數(shù)字語境中而定。

    Eg1. SELECT CURDATE();

           輸出:'2008-01-01'

    Eg2. SELECT CURDATE() + 0;

           輸出:20080101

    3. CURTIME()

           將當(dāng)前時間以'HH:MM:SS' HHMMSS 的格式返回, 具體格式根據(jù)函數(shù)用在字符串或是數(shù)字語境中而定。 

    Eg1. SELECT CURTIME();

           輸出:'15:15:26'

    4. DATE(expr)

           提取日期或時間日期表達式expr中的日期部分。

    Eg1. SELECT DATE('2007-12-31 23:59:59');

           輸出:'2007-12-31'

    5. DATEDIFF(expr, expr2)

           DATEDIFF() 返回起始時間 expr和結(jié)束時間expr2之間的天數(shù)。Exprexpr2為日期或 date-and-time 表達式。計算中只用到這些值的日期部分。

    Eg1. SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');

           輸出:1

    Eg2. SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');

           輸出:-31

    6. DAYOFMONTH(date)

           返回date 對應(yīng)的該月日期,范圍是從 131

    Eg1. SELECT DAYOFMONTH('2008-01-05');

           輸出:5

    7. MONTH (time)

           返回date對應(yīng)的月份,范圍時從 1 12

    Eg1. SELECT MONTH('2007-01-05');

    輸出:1

    8. HOUR(time)

           返回time 對應(yīng)的小時數(shù)。對于日時值的返回值范圍是從 0 23

    Eg1. SELECT HOUR('11:47:1');

    9. MINUTE(time)

           返回 time 對應(yīng)的分鐘數(shù),范圍是從 0 59

    Eg1. SELECT MINUTE('2007-01-05 11:51:23);

           輸出:51

    10. SECOND(time)

           返回time對應(yīng)的秒數(shù), 范圍是從 059

    Eg1. SELECT SECOND('11:56:43);

           輸出:43

    11. LAST_DAY(date)

           獲取一個日期或日期時間值,返回該月最后一天對應(yīng)的值。若參數(shù)無效,則返回NULL

    Eg1. SELECT LAST_DAY('2008-02-01');

           輸出:29

    12. NOW()

           返回當(dāng)前日期和時間值,其格式為 'YYYY-MM-DD HH:MM:SS' YYYYMMDDHHMMSS 具體格式取決于該函數(shù)是否用在字符串中或數(shù)字語境中。

    Eg1. SELECT NOW();

           輸出:'2007-01-05 11:54:30'

    13. SUBDATE(date,INTERVAL expr type) SUBDATE(expr,days)

           當(dāng)被第二個參數(shù)的 INTERVAL型式調(diào)用時, SUBDATE()DATE_SUB()的意義相同。對于有關(guān)INTERVAL參數(shù)的信息, 見有關(guān) DATE_ADD()的討論。

    Eg1. SELECT SUBDATE('2008-01-05', INTERVAL 31 DAY);

           輸出:2007-12-05

    14. SYSDATE()

           返回當(dāng)前日期和時間值,格式為'YYYY-MM-DD HH:MM:SS' YYYYMMDDHHMMSS 具體格式根據(jù)函數(shù)是否用在字符串或數(shù)字語境而定。

    在一個存儲程序或觸發(fā)器中, SYSDATE()返回其執(zhí)行的時間, 而非存儲成都或觸發(fā)語句開始執(zhí)行的時間。這個NOW()的運作有所不同。

    Eg1. SELECT SYSDATE();

           輸出:2008-01-05 12:01:41

    posted on 2008-01-07 08:42 阿蜜果 閱讀(3154) 評論(4)  編輯  收藏 所屬分類: MySql


    FeedBack:
    # re: 【MySql學(xué)習(xí)系列】常用函數(shù)
    2008-01-07 10:27 | Java,研究之路
    good  回復(fù)  更多評論
      
    # re: 【MySql學(xué)習(xí)系列】常用函數(shù)
    2008-01-07 17:49 | wǒ愛伱--咾婆
    good job , thanks ..  回復(fù)  更多評論
      
    # re: 【MySql學(xué)習(xí)系列】常用函數(shù)
    2008-01-09 12:01 | 木偶人
    謝謝了
    對了,可不可以指點一下我,我現(xiàn)在是剛學(xué)JAVA不久,主要從事網(wǎng)站建設(shè)這一塊,感覺沒有什么方向.....不知道該從那些方面著手...
    我的QQ:348773563,E-mail:zengzhisongjava@yahoo.cn謝謝了....  回復(fù)  更多評論
      
    # re: 【MySql學(xué)習(xí)系列】常用函數(shù)[未登錄]
    2011-04-07 11:14 | A
    Great!!  回復(fù)  更多評論
      
    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

          生活將我們磨圓,是為了讓我們滾得更遠(yuǎn)——“圓”來如此。
          我的作品:
          玩轉(zhuǎn)Axure RP  (2015年12月出版)
          

          Power Designer系統(tǒng)分析與建模實戰(zhàn)  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關(guān)注blog

    積分與排名

    • 積分 - 2298325
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: ZZIJZZIJ亚洲日本少妇JIZJIZ| 一级毛片在线免费观看| 毛片A级毛片免费播放| 亚洲永久永久永久永久永久精品| 免费的黄网站男人的天堂| 成年在线观看网站免费| 99999久久久久久亚洲| 操美女视频免费网站| 亚洲国产精品嫩草影院| 免费人妻无码不卡中文字幕18禁| 美女被爆羞羞网站免费| 亚洲国产精品成人网址天堂| 人成午夜免费大片在线观看| 最新精品亚洲成a人在线观看| 成人黄网站片免费视频| 亚洲福利视频一区| 无码区日韩特区永久免费系列| 伊人久久亚洲综合影院首页| 免费国产怡红院在线观看| www.av在线免费观看| 久久亚洲国产中v天仙www| 国产精品久久久久久久久免费| 伊人久久五月丁香综合中文亚洲 | 午夜免费福利小电影| 亚洲成年人免费网站| 妞干网在线免费视频| 国产成人自产拍免费视频| 亚洲av无码不卡| 嫩草视频在线免费观看| www免费黄色网| 亚洲国产成人久久精品app| 日韩激情淫片免费看| a毛片全部免费播放| 亚洲国产成人久久| 免费在线观看黄网站| 七色永久性tv网站免费看| 亚洲色成人四虎在线观看| 在线观看亚洲精品国产| 永久免费的网站在线观看| 二区久久国产乱子伦免费精品| 亚洲日韩中文字幕天堂不卡 |