mysql模糊查询

1. field  like  str 

2. field regex  pattern

3. LOCATE('substr',str,pos)

4. POSITION('substr' IN `field`)方法

5.  INSTR(`str`,'substr')方法

6. FIND_IN_SET(str1,str2):

 

 

1. like

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

    其中关于条件,SQL提供了四种匹配模式:

    1) % :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

          比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

          将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

          另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

          SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

          若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'

          虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

    2) _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

          比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'

          只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

          再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';

          只找出“三脚猫”这样name为三个字且第一个字是“三”的;

   3) like可以利用字符串前缀索引  

   参见:https://www.cnblogs.com/GT_Andy/archive/2009/12/25/1921914.html

 

2. REGEXP正则表达式

SELECT column_list FROM table_name WHERE string_column REGEXP pattern

  下表说明了正则表达式中一些常用的元字符和构造。

^匹配搜索字符串开头处的位置
$匹配搜索字符串末尾的位置
.匹配任何单个字符
[…]匹配方括号内的任何字符
[^…]匹配方括号内未指定的任何字符
匹配p1或p2模式匹配p1或p2模式
*匹配前面的字符零次或多次
+匹配前一个字符一次或多次
{n}

匹配前几个字符的n个实例

{m,n}从m到n个前一个字符的实例匹配

  

  

   







 

 

 

 

 

 

      举例:

     查询名字中包含100或200的名字:SELECT * FROM my_user WHERE `name` REGEXP '100|200';

     查询以“韩”字开头的名字:select * from my_user where name regex '^韩'

     参见:https://www.yiibai.com/mysql/regular-expression-regexp.html 

3. LOCATE('substr',str,pos)方法

   返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。如果pos存在,返回 substr 在 str 第pos个位置后第一次出现的位置,如果 substr 在 str 中不存在,返回值为0。

SELECT LOCATE('xbar',`foobar`);        ###返回0 

4. POSITION('substr' IN `field`)方法

    position可以看做是locate的别名,功能跟locate一样

5. INSTR(`str`,'substr')方法

SELECT `column` FROM `table` WHERE INSTR(`field`, 'keyword' )>0  

6. FIND_IN_SET(str1,str2):

   返回str2中str1所在的位置索引,其中str2必须以","分割开。(字段内容必须以“,”隔开才能匹配)

SELECT * FROM `person` WHERE FIND_IN_SET('apply',`name`);

   结果:

   

参见:https://www.cnblogs.com/chaobest/p/6737901.html



转载于:https://www.cnblogs.com/Jtianlin/p/10710340.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值