1. 程式人生 > >mysql 定位字符串的位置

mysql 定位字符串的位置

ins log pos sql語句 posit 查找 返回 foo ()

mysql中沒有charinde,使用find_in_set又只能定位逗號隔開的字符串位置,如果想查指定字符串中是否存在一個指定的字符,除了用like+count(1)以外,還可以考慮用

locate,position,instr函數,具體使用方法:

MySQL使用內置函數來進行模糊搜索(locate()等)

常用的一共有4個方法,如下:

1. 使用locate()方法

1.1.普通用法:

SELECT `column` from `table` where locate(‘keyword‘, `condition`)>0

類似於 java 的 indexOf();不過 locate() 只要找到返回的結果都大於0(即使是查詢的內容就是最開始部分),沒有查找到才返回0;

1.2. 指定其實位置:

SELECT LOCATE(‘bar‘, ‘foobarbar‘,5); --> 7 (從foobarbar的第五個位置開始查找)

2.使用instr()函數 (據說是locate()的別名函數)

SELECT `column` from `table` where instr(`condition`, ‘keyword’ )>0

唯一不同的是 查詢內容的位置不同,見SQL語句中過的keyword

3.使用position()方法,(據說也是locate()方法的別名函數,功能一樣)

SELECT `column` from `table` where position(‘keyword’ IN `condition`)

不過它不再是通過返回值來判斷,而是使用關鍵字 in

4.使用find_in_set()函數

如: find_in_set(str,strlist),strlist必須要是以逗號分隔的字符串

如果字符串str是在的strlist組成的N子串的字符串列表,返回值的範圍為1到N

SQL> SELECT FIND_IN_SET(‘b‘,‘a,b,c,d‘);
+---------------------------------------------------------+
| SELECT FIND_IN_SET(‘b‘,‘a,b,c,d‘)
| +---------------------------------------------------------+ | 2 | +---------------------------------------------------------+ 1 row in set (0.00 sec)

轉自:http://www.cnblogs.com/tommy-huang/p/4483583.html

mysql 定位字符串的位置