1. 字符串模糊匹配
- like 关键字 field like ‘%str%’
- like关键字的通配符
%
:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。_
:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。[]
:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]
:表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。- 查询内容包含通配符时,由于
通配符
的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询
INSTR(str,substr)
返回在字符串str中子串substr第一个出现的位置,下标从1
开始,没有返回0
,hql中可以使用
SELECT INSTR('foobarbar', 'bar'); -> 4
SELECT INSTR('xbar', 'foobar'); -> 0
LOCATE(substr,str) ,LOCATE(substr,str,pos)
双参数形式和INSTR功能相同,第三个参数代表开始查找位置,下标从1
开始,不存在返回0
,hql中可以使用
SELECT LOCATE('bar', 'foobarbar'); -> 4
SELECT LOCATE('xbar', 'foobar'); -> 0
SELECT LOCATE('bar', 'foobarbar',5); -> 7
POSITION(substr ,str)
返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0,hql中不可以使用
SELECT POSITION('bar', ‘foobarbar'); -> 4
SELECT POSITION('xbar', ‘foobar'); -> 40
find_in_set(str1,str2)
返回str2中str1所在的位置索引,str2必须以","分割开
, 如有两行数据
name | limits |
---|---|
小明 | 1,2,12 |
小红 | 11, 22, 32 |
使用 like ‘%2%’,会查询出两条数据,find_in_set(‘2’, limits)>0 会查到对应的。
contains('targetStr','serachStr')
用法请参考地址:http://www.php.cn/mysql-tutorials-73769.html
全文本检索:https://blog.csdn.net/wangjian530/article/details/80554785
在mysql中,对普通的字符串列无法使用contains方法。
spatial data : 空间数据类型
参考文章地址:https://www.jianshu.com/p/d65a455fa3d1