zoukankan      html  css  js  c++  java
  • mysql中LIKE和REGEXP

    mysql中LIKE和REGEXP都可以用来字符匹配

    正则表达式REGEXP是为复杂搜索指定模式的强大方式。

    • like用法

     

    LIKE一般与通配符(%)和(_)两个使用

    如例

    SELECT prod_id,prod_name
    FROM products
    WHERE prod_name LIKE ' %on_';

    其中%可以匹配任意长度任意字符,也可长度为0,即没有字符

    其中_只能匹配长度为一的单一字符,若原代码中为'%on__' 即可以匹配长度为二的任意字符

    若要匹配字符串中有%和_的字符串,则需要用到关键字escape:

    使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用

    如例

    SELECT  s_name,s_address
    FROM students
    WHERE s_name LIKE '%TOM/_%' ESCAPE '/';   

    其中字符‘/’为转义字符,可以将其后面的一个通配符失效,变成被匹配的字符。  

    例中即匹配名字中含‘TOM_’ 的学生数据。

    • REGEXP用法

    REGEXP语法位置与LIKE相同

    如例

    SELECT prod_name 
    FROM products
    WHERE prod_name REGEXP '1000';

    此段代码即可匹配到prod_name中所有含有1000的行。

    LIKE和REGEXP一个重大区别就是:LIKE匹配整个列,而REGEXP在列值内进行匹配。

    如果匹配的文本在列值中出现,LIKE将不会检索出结果。

    所以在上例中REGEXP可以匹配到列种含有1000的行,若用LIKE语句则要写成 LIKE ‘%1000%’


    REGEXP中的.:

    表示匹配任一单一字符

    SELECT prod_name
    FROM products
    WHERE pro_price REGEXP '.000'
    ORDER BY prod_name;

    上例可以将商品价格为几千的商品名列出

    regexp中的OR: |

    可以搜索多个串之一

    SELECT prod_name 
    FROM products
    WHERE prod_name REGEXP '1000|2000'
    ORDER BY prod_name;

    上例中即匹配字符1000或2000

    REGEXP中的[] :

    匹配[]符号中几个字符之一

    SELECT prod_name 
    FROM products
    WHERE prod_weight REGEXP '[123]KG'
    ORDER BY prod_name;

    上例中即可匹字符1KG,2KG,3KG

    可以用[1-5],[a-d]来表示范围

    其中可以用^符号否定来表示匹配除这些字符以外的所有字符,如:[^123] 匹配除了字符1,2,3外的所有字符

    []还可以匹配字符类:

    [:alnum:] 任意字母和数字(同[a-zA-Z0-9)

    [:alpha:] 任意字母 (同[a-zA-Z])

    [:blank:] 空格和制表(同[\t])

    [:cntrl:] ASCII控制字符(ascll 0到37和127)

    [:digit:] 任意数字 (同[0-9])

    [:graph:] 与[:print:]相同,但不包括空格

    [:lower:] 任意小写字母

    [:print:] 任意可打印字符

    [:punct:] 即不在[:alnum:]也不在[:cntrl:]的字符

    [:space:] 包括空格在内的任意空白字符(同[\f\n\r\t\v])

    [:upper:] 任意大写字母

    [:xdigit:] 任意十六进制数字(同[a-fA-F0-9)

     

    REGEXP中的转义字符 \  :

    \可以使下一个特殊字符失效,如(\.  \-  \  \[  \])

    SELECT vned_name
    FROM vendors
    WHERE vend_name REGEXP '\.'
    ORDER BY vend_name;

    上例匹配字符.

    \也可用来引用元字符:

    \f  换页  \n  换行  \r回车  \t制表  \纵向制表

  • 相关阅读:
    vue打包不显示或图片不显示配置
    Vue::is特性用法
    毕业实习报告
    前端vscode常用快捷键总结
    1. 变量常量
    信息收集之CMS指纹识别
    4. EIGRP的复合度量值
    3. EIGRP报文,三张表,邻居建立
    信息收集之目录扫描
    2. EIGRP路由单播邻居和被动接口
  • 原文地址:https://www.cnblogs.com/Jacck/p/5580662.html
Copyright © 2011-2022 走看看