MY SQL 函數


left join
        左連接

        select count(*) as num from login_log lo LEFT JOIN customer c ON lo.llog_memberid=c.memberid   
                where c.membertype='0' and DATE_FORMAT(lo.time, '%Y-%m-%d')='$date'


in
        存在

        SELECT * FROM keyword_name AS t1 , (SELECT count(*) as count , knt_id FROM keyword_subject_msg 
        WHERE knt_name_subject='4' GROUP BY knt_id) as count_ks WHERE 1 AND t1.kn_active='1' 
        AND t1.kn_id NOT IN (SELECT knt_id FROM keyword_subject_msg AS t2 WHERE t2.knt_name_subject='-1') 
        AND t1.kn_id NOT IN (SELECT knt_id FROM keyword_subject_msg ) AND count_ks.knt_id = t1.kn_id 
        AND count_ks.count between 1 and 5 LIMIT 0,10


max
        最大值

        SELECT MAX(article) AS article FROM shop;


union
        合併

        SELECT * FROM a
        UNION 
        SELECT * FROM b


to_days
        日期

        查詢選擇所有 date_col 值在最後 30 天內的記錄
            SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;


replace
        
        替換字符

        update [table] set [field]=replace([field],'[str_search]','[str_replace]');
        可以在最後用 where 做條件選擇

        例如:update keyword_name_msg set knm_content=replace(knm_content,'-','_');


concat
        
        連接字符

        mysql> SELECT CONCAT('My', 'S', 'QL');

        -> 'MySQL'


date_format
        日期格式化

        DATE_FORMAT(date,format) 依照 format 字符串格式化 date 值

        SELECT DATE_FORMAT("2006-8-8 23:23:23",'%Y-%m-%d') where DATE_FORMAT(date,'%Y-%m-%d')='$date'

        SELECT tb_id,tb_title,DATE_FORMAT(tb_pub_ymd,'%Y-%m-%d') AS tb_pub_ymd FROM tradeleads_base


date
        日期

        SELECT date( `b_date` ) as date FROM `b` 


GROUP BY
        分組

        SELECT * FROM keyword_name AS t1 , (SELECT count(*) as count , knt_id FROM keyword_subject_msg 
        WHERE knt_name_subject='4' GROUP BY knt_id) as count_ks WHERE 1 AND t1.kn_active='1' 
        AND count_ks.knt_id = t1.kn_id AND count_ks.count between 1 and 5 LIMIT 0,10 

between and
        之間

        SELECT t1.*,t2.knt_name AS knt_name FROM keyword_subject_msg AS t1 LEFT JOIN keyword_name_templet AS t2 ON t1.knt_name_subject=t2.knt_id 
        WHERE 1 AND t1.knt_name_subject='4' AND t1.ksm_active='0' 
        AND t1.ksm_date BETWEEN '2001-01-1' AND '2006-11-14 23:59:59' ORDER BY ksm_date desc LIMIT 0,20 

NOW()
        當前日期

        NOW() 返回當前的日期時間值 
        SELECT NOW();


DISTINCT
        去重

        SELECT distinct b_name FROM `b` 


DATE_ADD
        日期

        前5天的記錄
        select count(*) as total from poke_audio_user_profile   where lastaccess >= DATE_ADD( now(), INTERVAL -5 day    )



常用字符串函數
    1. Cancat(s1 , s2 , …Sn) 把傳入的參數連接成爲一個字符串;
    2. Insert(Str , x,y , instr) 將字符串str從第x位置開始,y個字符長的子串替換爲字符串instr;
    3. Lower(str) 將字符串str轉換成小寫;
    4. Upper(str) 將字符串str轉換成大寫;
    5. Left(str,x) 和Right(str,x) 返回字符串最左邊和最右邊的X個字符,爲NULL的話則不返回任何字符串;
    6. Lpad(str,n , pad) 和 Rpad(str,n , pad) 用字符串pad對str最左邊和最右邊進行填充;
    8. Ltrim(str) 和Rtrim(str) 去掉字符串str左則和右側空格;
    9. Repeat(str,x) 返回str重複X次的結果;
    10. Replace(str,a,b) 用字符串替換字符串str中所有出現的字符串a;
    11. Strcmp(s1 ,s2) 比較字符串s1和s2的ASCII碼的大小;
    12. Trim(str) 去掉目標字符串的開頭和結尾的空格;
    13. Substring(str,x,y) 返回從字符串str中的第X位置起Y個字符串長度的字符;


常用數值函數
    1. Abs(x) 返回x的絕對值;
    2. Ceil(x) 返回大於x的最大整數;
    3. Floor(x) 返回小於x的最大整數;
    4. Mod(x,y) 返回X/y的模;
    5. Rand() 返回0-1內的隨機值;
    6. Round(x,y) 返回參數x的四捨五入的有y爲小數的值;
    7. Truncate(x,y) 返回數字x截斷爲y位的小數結果;


日期和時間函數
    1. Curdate() 返回當前日期,只包含年月日;
    2. Curtime() 返回當前時間,只包含時分秒;
    3. Now() 返回當前日期和時間;
    4. Unix_timestamp(date) 返回日期date的UNIX時間戳;
    5. From_unixtime(unixtime) 返回UNIXTUME時間戳的日期值;
    6. Week(date) 返回所給的日期是一年中的第幾周;
    7. Year(date) 返回所給日期是哪一年;
    8. Hour(time) 返回所給時間的小時;
    9. Minute(time) 返回所給時間的分鐘;
    10. Monthname(date) 返回date的英文月份名稱;
    11. Date_Format(date,fmt) 按字符串fmt格式化日期date值;
       日期格式(注意大小寫):
       (1) %S,%s 兩位數字形式的秒;
       (2) %i 兩位數字形式的分;
       (3) %H 兩位數字形式的小時,24小時制;
       (4) %h,%I 兩位數字形式的小時,12小時制;
       (5) %k 數字形式的小時,24小時制;
       (6) %L 數字形式的小時,12小時制;
       (7) %T 24小時的時間形式;
       (8) %r 12小時的時間形式;
       (9) %p AM或PM;
       (10) %W 一週中每一天的名稱;
       (11) %a 一週中每一天的名稱縮寫;
       (12) %d 兩位數字表示月中的天數;
       (13) %e 數字形式表示月中的天數;
       (14) %D 英文後綴表示月中的天數;
       (15) %w 以數字形式表示週中的天數;
       (16) %j 以三位數表示年終的天數;
       (17) %U 周,Sunday爲週中的第一天;
       (18) %u 周,Monday爲週中的第一天;
       (19) %M 月名;
       (20) %b 縮寫月名;
       (21) %m 兩位數字表示的月份;
       (22) %c 數字表示的月份;
       (23) %Y 四位數字表示的年份;
       (24) %y 兩位數字表示的年份;
       (25) %% 直接值”%”;
    12. Date_Add(date,INTERVAL expr type) 返回所給日期date相差INTERVAL時間段的日期(expr爲表達式,type爲間隔類型);
       日期間隔類型:
       (1) Hour 小時(hh);
       (2) Minute 分(mm);
       (3) Second 秒(ss);
       (4) Year 年(y);
       (5) Month 月(MM);
       (6) Day 日(DD);
       (7) Year_Month 年和月(YY-MM);
       (8) Day_Hour 日和小時(DD hh);
       (9) Day_Minute 日和分鐘(DD hh:mm);
       (10) Day_Second 日和秒(DD hh:mm:ss);
       (11) Hour_Minute 小時和分(hh:mm);
       (12) Hour_Second 小時和秒(hh:ss);
       (13) Minute_Second 分鐘和秒(mm:ss);
    13. Datediff(date1 , date2); 用來計算兩個日期之間相差的天數;


流程函數
    1. if(value ,t f) 如果value是真,返回t,否則返回f;
    2. ifnull(value1 ,value2) 如果value不爲空返回value1,否則返回value2;
    3. Case When [value1] Then[result] … Else[Default] End 如果Value1是真,返回result1,否則返回default;
    4. Case [expr] When [value1] Then[result1]… Else[default] End 如果expr等於value1,返回result1,否則返回default;


其他常用函數
    1. Database() 返回當前數據庫名;
    2. Version() 返回當前數據庫版本;
    3. User() 返回當前登錄用戶名;
    4. Inet_aton(IP) 返回IP地址的數字表示;
    5. Inet_ntoa(num) 返回數字代表的IP地址;
    6. Password(str) 返回字符串str的加密版本;
    7. Md5() 返回字符串str的MD5值;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章