MySQL常用命令(四)-REGEXP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL常用命令(四)-REGEXP相关的知识,希望对你有一定的参考价值。

参考技术A

正则表达式的作用是匹配文本,将一个模式与一个文本串进行比较,mysql用WHERE子句对正则表达式提供初步的支持,允许指定正则表达式,过滤SELECT检索出来的数据,但是其实MySQL支持的只是正则表达式的一小部分;

通过实验的结果我发现LIKE是严格遵守整个列值进行匹配,而REGEXP只需要列值的部分包含表达式即可;通俗点讲就是,LIKE后面跟的字符位数和列值完全一致,但是REGEXP后跟的字符位数只需要小于或等于即可匹配;

默认情况下LIKE和REGEXP匹配是不区分大小写的,如果要区分大小写需要使用关键字BINARY;

[1-9]和[123456789]等价,字母也可以[a-z],也可以是非完整的比如[1-3][6-9];

正则表达式中出现过的特殊字符比如.[]|-等等,出现在所取值中,应该使用\\进行转义显示;

有一些已经定义好的mysql内部,可以直接使用的类;
表9-2 字符类
类 说 明
[:alnum:] 任意字母和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和制表(同[\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与[:print:]相同,但不包括空格
[:lower:] 任意小写字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])
[:upper:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

表9-3 重复元字符
控制匹配的字符出现次数
元 字 符 说 明
* 0个或多个匹配
+ 1个或多个匹配(等于1,)
? 0个或1个匹配(等于0,1)
n 指定数目的匹配
n, 不少于指定数目的匹配
n,m 匹配数目的范围(m不超过255)

前面使用的REGEXP都是匹配列的任意位置,如果只想匹配特殊位置,需要使用定位符;
定位元字符
元 字 符 说 明
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

前提是不选择库和表的时候,否则会报错;
如果结果为真则返回1,否则返回0;

[MySQL] 常用SQL技巧--18.5

1.正则表达式使用

  MySQl利用REGEXP命令,提供正则表达式功能。

技术分享

 

例子:select ‘abcdef‘ REGEXP ‘^a‘;

   select ‘efg‘ REGEXP ‘[^XYZ]‘;

 

2. 用RAND()函数提取随机行

 

  使用RAND()函数从表中随机抽取记录行,这对一些抽样分析统计非常有用。

例如:select * from category order by rand() limit 5;

 

3. 利用group by的with rollup子句做统计报表

 

  在SQL语句中,使用group by的with rollup子句可以检索出更多的分组聚和信息;方便做报表。

技术分享

 

 

4. 数据库名、表名大小写的问题

  在MySQL中,数据库对应操作系统下的数据目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于

存储引擎)。因此,操作系统大小写敏感性决定了数据库名和表名对大小写的敏感性(触发器和表别名也敏感)。

  大多数Unix操作系统对大小写敏感,区分大小写;而在Windows中,对大小写不敏感,不区分大小写。

  列、索引、存储过程(不包括触发器)在任何平台上对大小写都不敏感。

  建议将库名,表名,触发器名,别名统统写成小写,并在参数中设置lower_case_tables_name=1;

技术分享

Use lower_case_table_names=1 on all systems. The main disadvantage with this is that when you use SHOW TABLES or SHOW DATABASES, you do not see the names in their original lettercase.

 

 

  

以上是关于MySQL常用命令(四)-REGEXP的主要内容,如果未能解决你的问题,请参考以下文章

十三周四次课 更改root密码mysql连接常用命令

linux常用命令-grep,egrep,regexp

MySQL实战必备文章。DDL常用命令汇总及登录数据库相关命令!

MySQL数据库常用命令大全

MySQL数据库增删改查常用语句命令

四Redis常用命令