mysql常用函式--個人筆記

小亮520cl發表於2015-07-29

----ifnull   isnull函式


SELECT * FROM t3;
id name
1
2
3  NULL


SELECT IFNULL(NAME,'kkkk') FROM t3;




if函式

點選(此處)摺疊或開啟

  1. mysql> select * from t3;
    +------+------+
    | id   | cj   |
    +------+------+
    |    1 |    2 |
    |    2 |    3 |
    |    3 |    3 |
    |    4 |    5 |
    |    5 |    5 |
    |    6 |    7 |
    +------+------+
    6 rows in set (0.00 sec)


    mysql> select *,if(id=cj,'eq','neq') from t3;
    +------+------+----------------------+
    | id   | cj   | if(id=cj,'eq','neq') |
    +------+------+----------------------+
    |    1 |    2 | neq                  |
    |    2 |    3 | neq                  |
    |    3 |    3 | eq                   |
    |    4 |    5 | neq                  |
    |    5 |    5 | eq                   |
    |    6 |    7 | neq                  |
    +------+------+----------------------+



substring_index函式

  1. MySQL> select * from t1;
    +--------+---------------------+
    | userid | atime |
    +--------+---------------------+
    | 1 | 2013-08-12 11:05:25 |
    | 2 | 2013-08-12 11:05:29 |
    | 3 | 2013-08-12 11:05:32 |
    | 5 | 2013-08-12 11:05:34 |
    | 1 | 2013-08-12 11:05:40 |
    | 2 | 2013-08-12 11:05:43 |
    | 3 | 2013-08-12 11:05:48 |
    | 5 | 2013-08-12 11:06:03 |
    +--------+---------------------+
    8 rows in set (0.00 sec)


  2. 其中userid不唯一,要求取表中每個userid對應的時間離現在最近的一條記錄.初看到一個這條件一般都會想到借用臨時表及新增主建藉助於join操作之類的.
    給一個簡方法:
  3. MySQL> select userid,substring_index(group_concat(atime order by atime desc),",",1) as atime from t1 group by userid;
    +--------+---------------------+
    | userid | atime |
    +--------+---------------------+
    | 1 | 2013-08-12 11:05:40 |
    | 2 | 2013-08-12 11:05:43 |
    | 3 | 2013-08-12 11:05:48 |
    | 5 | 2013-08-12 11:06:03 |
    +--------+---------------------+
    4 rows in set (0.03 sec)

  4. substring_index(col_name,"分隔符",n)    ----n表示前n部分

字串出現的次數
  1. (root@127.0.0.1) [test]> select * from city;
  2. +-----------------------------------------+
  3. | name |
  4. +-----------------------------------------+
  5. | 北京市北京市北京北京北京市 |
  6. | tom is a good tom boy |
  7. +-----------------------------------------+
  8. 2 rows in set (0.00 sec)
檢視name中tom出現的次數
(root@127.0.0.1) [test]> select (length(name)-length(replace(name,"tom","")))/length("tom")  as count ,name from city;
+--------+-----------------------------------------+
| count  | name                                    |
+--------+-----------------------------------------+
| 0.0000 | 北京市北京市北京北京北京市              |
| 2.0000 | tom is a good tom boy                   |
+--------+-----------------------------------------+
2 rows in set (0.00 sec)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1755476/,如需轉載,請註明出處,否則將追究法律責任。

相關文章