mysql中正则表达式搜索功能的示例分析
发布时间:2022-09-19 12:45:02 所属栏目:PHP 来源:
导读: mysql中正则表达式搜索功能的示例分析
本文讲解"mysql中正则表达式搜索功能的示例分析",用于解决相关问题。
具体如下:
我们知道正则表达式是描述搜索模式的特殊字符串。 它是一个强大
本文讲解"mysql中正则表达式搜索功能的示例分析",用于解决相关问题。
具体如下:
我们知道正则表达式是描述搜索模式的特殊字符串。 它是一个强大
|
mysql中正则表达式搜索功能的示例分析 本文讲解"mysql中正则表达式搜索功能的示例分析",用于解决相关问题。 具体如下: 我们知道正则表达式是描述搜索模式的特殊字符串。 它是一个强大的工具,为我们提供一种简洁灵活的方法来识别基于模式的文本字符,例如字符,单词等。例如php正则表达式教程,我们可以使用正则表达式来搜索电子邮件,IP地址,电话号码,社会安全号码或具有特定模式的任何内容。正则表达式可以由正则表达式处理器解释的自己的语法,正则表达式广泛应用于从编程语言到数据库(包括MySQL)大部分平台。使用正则表达式的优点是,不限于在like运算符中基于具有百分号(%)和下划线(_)的固定模式搜索字符串。 使用正则表达式,有更多的元字符来构造灵活的模式。 了解了这些我们是不是想要来试试水呢???废话不多说,MySQL允许使用REGEXP运算符在SQL语句中匹配模式,所以,我们来看下,正则再where子句中的语法格式: SELECT? ?column_list FROM ?table_name WHERE ?string_column?REGEXP?pattern; 这条sql中执行string_column与模式pattern匹配,如果string_column中的值与模式pattern匹配,则WHERE子句中的表达式将返回1,否则返回0。如果string_column或pattern为NULL,则结果为NULL。除了REGEXP运算符之外,可以使用RLIKE运算符,这是REGEXP运算符的同义词。其中,REGEXP运算符的否定形式是NOT REGEXP。 完事我们来看个实例哈,假设想找出名字以字母A,B或C开头的产品。可以使用select语句中的正则表达式如下: SELECT? ?productname FROM ?products WHERE ?productname?REGEXP?'^(A|B|C)' ORDER?BY?productname; 执行上面查询语句,得到以下结果: +--------------------------------+ |?productname?????| +--------------------------------+ |?America?West?Airlines?B757-200?| |?American?Airlines:?B767-300?| |?American?Airlines:?MD-11S??| |?ATA:?B757-300?????| |?Boeing?X-32A?JSF????| |?Collectable?Wooden?Train??| |?Corsair?F4U?(?Bird?Cage)??| +--------------------------------+ 7?rows?in?set 该模式允许查询名称以A,B或C开头的产品,其中字符^表示从字符串的开头匹配,完事字符|如果无法匹配,则搜索替代方法。下表说明了正则表达式中一些常用的元字符和构造: 元字符行为 ^ 匹配搜索字符串开头处的位置 $ 匹配搜索字符串末尾的位置 . 匹配任何单个字符 […] 匹配方括号内的任何字符 [^…] 匹配方括号内未指定的任何字符 匹配p1或p2模式 php正则表达式教程_php正则表达式替换_php 正则表达式 或 * 匹配前面的字符零次或多次 + 匹配前一个字符一次或多次 {n} 匹配前几个字符的n个实例 {m,n} 从m到n个前一个字符的实例匹配 我们再来查找名称以a开头的产品,我们在名称开头使用“^”进行匹配,如下查询语句: 执行上面查询语句,得到以下结果: +--------------------------------+ |?productname?????| +--------------------------------+ |?American?Airlines:?B767-300?| |?America?West?Airlines?B757-200?| |?ATA:?B757-300?????| |?American?Airlines:?MD-11S??| +--------------------------------+ 4?rows?in?set 如果要使REGEXP运算符以区分大小写的方式比较字符串,可以使用BINARY运算符将字符串转换为二进制字符串。因为MySQL比较二进制字节逐字节而不是逐字符。 这允许字符串比较区分大小写。例如,以下语句只匹配开头为大写“C”的产品名称: SELECT? ?productname FROM ?products WHERE ?productname?REGEXP?BINARY?'^C'; 执行上面查询语句,得到以下结果: +--------------------------+ |?productname????| +--------------------------+ |?Collectable?Wooden?Train?| |?Corsair?F4U?(?Bird?Cage)?| +--------------------------+ 2?rows?in?set 要找到以f结尾的产品,我们可以使用'$f‘来匹配字符串的末尾: SELECT? ?productname FROM ?products WHERE ?productname?REGEXP?'f$'; 执行上面查询语句,得到以下结果: +------------------+ |?productname??| +------------------+ |?Boeing?X-32A?JSF?| +------------------+ 1?row?in?set 要查找其名称包含“ford”的产品,就要使用以下查询: SELECT? ?productname FROM ?products WHERE ?productname?REGEXP?'ford'; 执行上面查询语句,得到以下结果: +----------------------------------+ |?productname??????| +----------------------------------+ |?1968?Ford?Mustang????| |?1969?Ford?Falcon?????| |?1940?Ford?Pickup?Truck???| |?1911?Ford?Town?Car????| |?1932?Model?A?Ford?J-Coupe??| |?1926?Ford?Fire?Engine???| |?1913?Ford?Model?T?Speedster??| |?1934?Ford?V8?Coupe????| |?1903?Ford?Model?A????| |?1976?Ford?Gran?Torino???| |?1940s?Ford?truck?????| |?1957?Ford?Thunderbird???| |?1912?Ford?Model?T?Delivery?Wagon?| |?1940?Ford?Delivery?Sedan???| |?1928?Ford?Phaeton?Deluxe???| +----------------------------------+ 15?rows?in?set 要查找名称只包含10个字符的产品,可以使用'^‘和'$‘来匹配产品名称的开头和结尾,并重复{10}次任何字符.php正则表达式教程,作为以下查询: SELECT? ?productname FROM ?products WHERE ?productname?REGEXP?'^.{10}$'; 执行上面查询语句,得到以下结果: +-------------+ |?productname?| +-------------+ |?HMS?Bounty?| |?Pont?Yacht?| +-------------+ 2?rows?in?set 其实吧,这个查询方式是固定的,可变的是你写的正则,所以具体咋用,就要看各位小伙伴的能力了哦。 关于 "mysql中正则表达式搜索功能的示例分析" 就介绍到此。希望多多支持编程宝库。 (编辑:草根网_南昌站长网 ) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐

浙公网安备 33038102330553号