【Mysql】instr與find_in_set與regexp

小亮520cl發表於2016-08-25
MySQL [interface_hd_com]> select * from tbl_name;
+---------------+
| dg_order_time |
+---------------+
| 1             |
| 1,2,3,4       |
| 2,3,4         |
| 1             |
| 2             |
+---------------+
5 rows in set (0.00 sec)

instr顯示要查詢的子串的位子

insrt:用來顯示所在的座標

  1. MySQL [interface_hd_com]> select instr(dg_order_time,'1') from tbl_name;
  2. +--------------------------+
  3. | instr(dg_order_time,'1') |
  4. +--------------------------+
  5. | 1 |
  6. | 1 |
  7. | 0 |
  8. | 1 |
  9. | 0 |
  10. +--------------------------+
  11. 5 rows in set (0.00 sec)
查詢不包含1的
  1. MySQL [interface_hd_com]> select  * from tbl_name  where instr(dg_order_time,'1')=0;
    +---------------+
    | dg_order_time |
    +---------------+
    | 2,3,4         |
    | 2             |
    +---------------+
    2 rows in set (0.00 sec)

find_in_set:查詢包含的

  1. MySQL [interface_hd_com]> select * from tbl_name where find_in_set('1',dg_order_time);
  2. +---------------+
  3. | dg_order_time |
  4. +---------------+
  5. | 1 |
  6. | 1,2,3,4 |
  7. | 1 |
  8. +---------------+
  9. 3 rows in set (0.00 sec)

  10. MySQL [interface_hd_com]> select * from tbl_name where find_in_set('2',dg_order_time);
  11. +---------------+
  12. | dg_order_time |
  13. +---------------+
  14. | 1,2,3,4 |
  15. | 2,3,4 |
  16. | 2 |
  17. +---------------+
  18. 3 rows in set (0.00 sec)

  19. MySQL [interface_hd_com]> select * from tbl_name where find_in_set('3',dg_order_time);
  20. +---------------+
  21. | dg_order_time |
  22. +---------------+
  23. | 1,2,3,4 |
  24. | 2,3,4 |
  25. +---------------+
  26. 2 rows in set (0.00 sec)

  27. MySQL [interface_hd_com]> select * from tbl_name where find_in_set('1,2',dg_order_time);
  28. Empty set (0.00 sec)
不能用來查詢不包含的,並且只能查一個字串

regexp正規表示式
  1. 基本語法:
  2. Regular Expression Operators



    1. 擴充套件正規表示式的一些字元是:
    2. .’匹配任何單個的字元。
    3. 字元類“[...]”匹配在方括號內的任何字元。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字元的範圍,使用一個“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何數字。
    4. * ”匹配零個或多個在它前面的字元。例如,“x*”匹配任何數量的“x”字元,“[0-9]*”匹配任何數量的數字,而“.*”匹配任何數量的任何字元。
    5. 如果REGEXP模式與被測試值的任何地方匹配,模式就匹配(這不同於LIKE模式匹配,只有與整個值匹配,模式才匹配)
    6. 為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。


  3. 簡單用法
  4. MySQL [interface_hd_com]> select * from testtab;
    +---------+
    | id      |
    +---------+
    | 1       |
    | 1,2     |
    | 1,2,3,4 |
    | 1,2,3   |
    | 3,4,5   |
    +---------+
    5 rows in set (0.00 sec)


    MySQL [interface_hd_com]> SELECT * FROM testtab where id regexp '1|2|3|4';  ###包含1,2,3,4字串的
    +---------+
    | id      |
    +---------+
    | 1       |
    | 1,2     |
    | 1,2,3,4 |
    | 1,2,3   |
    | 3,4,5   |
    +---------+
    5 rows in set (0.00 sec)


參考:
http://dev.mysql.com/doc/refman/5.6/en/regexp.html



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

相關文章