【Mysql】instr與find_in_set與regexp
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顯示要查詢的子串的位子
regexp正規表示式
+---------------+
| dg_order_time |
+---------------+
| 1 |
| 1,2,3,4 |
| 2,3,4 |
| 1 |
| 2 |
+---------------+
5 rows in set (0.00 sec)
instr顯示要查詢的子串的位子
insrt:用來顯示所在的座標
-
MySQL [interface_hd_com]> select instr(dg_order_time,'1') from tbl_name;
-
+--------------------------+
-
| instr(dg_order_time,'1') |
-
+--------------------------+
-
| 1 |
-
| 1 |
-
| 0 |
-
| 1 |
-
| 0 |
-
+--------------------------+
- 5 rows in set (0.00 sec)
查詢不包含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:查詢包含的
-
MySQL [interface_hd_com]> select * from tbl_name where find_in_set('1',dg_order_time);
-
+---------------+
-
| dg_order_time |
-
+---------------+
-
| 1 |
-
| 1,2,3,4 |
-
| 1 |
-
+---------------+
-
3 rows in set (0.00 sec)
-
-
MySQL [interface_hd_com]> select * from tbl_name where find_in_set('2',dg_order_time);
-
+---------------+
-
| dg_order_time |
-
+---------------+
-
| 1,2,3,4 |
-
| 2,3,4 |
-
| 2 |
-
+---------------+
-
3 rows in set (0.00 sec)
-
-
MySQL [interface_hd_com]> select * from tbl_name where find_in_set('3',dg_order_time);
-
+---------------+
-
| dg_order_time |
-
+---------------+
-
| 1,2,3,4 |
-
| 2,3,4 |
-
+---------------+
-
2 rows in set (0.00 sec)
-
-
MySQL [interface_hd_com]> select * from tbl_name where find_in_set('1,2',dg_order_time);
- Empty set (0.00 sec)
不能用來查詢不包含的,並且只能查一個字串
regexp正規表示式
-
基本語法:
-
Regular Expression Operators
-
expr NOT REGEXP pat, expr NOT RLIKE pat
This is the same as NOT (expr REGEXP pat).
-
expr REGEXP pat, expr RLIKE pat
-
-
擴充套件正規表示式的一些字元是:
-
‘.’匹配任何單個的字元。
-
字元類“[...]”匹配在方括號內的任何字元。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字元的範圍,使用一個“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何數字。
-
“ * ”匹配零個或多個在它前面的字元。例如,“x*”匹配任何數量的“x”字元,“[0-9]*”匹配任何數量的數字,而“.*”匹配任何數量的任何字元。
-
如果REGEXP模式與被測試值的任何地方匹配,模式就匹配(這不同於LIKE模式匹配,只有與整個值匹配,模式才匹配)。
-
為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。
-
簡單用法
-
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
- 基本語法:
-
Regular Expression Operators
-
expr NOT REGEXP pat, expr NOT RLIKE pat
This is the same as NOT (expr REGEXP pat).
-
expr REGEXP pat, expr RLIKE pat
-
expr NOT REGEXP pat, expr NOT RLIKE pat
-
-
擴充套件正規表示式的一些字元是:
-
‘.’匹配任何單個的字元。
-
字元類“[...]”匹配在方括號內的任何字元。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字元的範圍,使用一個“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何數字。
-
“ * ”匹配零個或多個在它前面的字元。例如,“x*”匹配任何數量的“x”字元,“[0-9]*”匹配任何數量的數字,而“.*”匹配任何數量的任何字元。
-
如果REGEXP模式與被測試值的任何地方匹配,模式就匹配(這不同於LIKE模式匹配,只有與整個值匹配,模式才匹配)。
- 為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。
-
擴充套件正規表示式的一些字元是:
- 簡單用法
-
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql FIND_IN_SET函式、INSTR函式MySql函式
- mysql模糊查詢like與REGEXP的使用詳細介紹MySql
- 【轉】Oracle 正規表示式函式-REGEXP_INSTR 使用例子Oracle函式
- mysql find_in_set()函式的使用MySql函式
- MySQL函式FIND_IN_SET介紹MySql函式
- oracle regexp_like用法與正則Oracle
- [丹臣]ORACLE中Like與Instr效能大比拼Oracle
- MySQL 裡的 find_in_set () 和 in () 和 likeMySql
- 相容MySQL中的find_in_set函式MySql函式
- 在資料庫的查詢與更新中,CHARINDEX與instr的區別?資料庫Index
- instr() 函式函式
- mysql與pymysqlMySql
- Mysql 與 PymysqlMySql
- MySQL與RESTfulAPIMySqlRESTAPI
- 【MySQL】九、MySQL與IO.MySql
- Oracle instr函式Oracle函式
- MySQL之in與existsMySql
- Mysql管理與配置MySql
- MySQL簡介與啟動MySqlMySql
- Navicat for MySQL 與MySQL的混合使用MySql
- spark sql與mysql 資料載入與匯出資料到mysqlSparkMySql
- oracle中substr() instr() 用法Oracle
- Instr函式的用法函式
- instr、substr函式用法函式
- 【轉】oracle instr函式Oracle函式
- 老生常談:MYSQL模式匹配 REGEXP和like的用法MySql模式
- 【MySQL】安裝與配置MySql
- mysql鎖與會話MySql會話
- MySQL事務與鎖MySql
- MySQL配置與啟動MySql
- MySQL安裝與配置MySql
- MySQL的最大與最小MySql
- MySQL的@與@@區別MySql
- PostgreSQL與MySQL比較MySql
- MySQL 與OS互動MySql
- mysql與redis的區別與使用場景MySqlRedis
- [Mysql]LinuxShell與mysql的配合MySqlLinux
- RegExp物件物件