1. Mysql的正则表达式仅仅是SQL语言的一个子集,可以匹配基本的字符、字符串。
例如:select * from wp_posts where post_name REGEXP 'hello',可以检索出列post_name中所有包含字符串hello的行
REGEXP '.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。
注意:
关于LIKE和REGEXP的区别:
#使用like语句查询prod_name=1000的数据
输入:SELECT prod_id , prod_name FROM products WHERE prod_name LIKE '1000';
输出:
可以看到输出为空,即什么也没输出。难道说数据表中并没有prod_name=1000的数据吗?
#使用正则表达式REGEXP
输入:SELECT prod_id , prod_name FROM products WHERE prod_name REGEXP'1000';
输出:+---------------+
原因:Like匹配整个字段,而正则表达式regexp在列值内进行部分匹配,只要一部分满足正则规则则匹配成功;
个人理解:like匹配的是被匹配字段的整个值,只有被匹配字段的全部字符被包含在like中的时候才算匹配成功,;而正则表达式REGEXP则是匹配规则中的字符规则只要在被匹配字段的值中出现就算是匹配成功,返回行。例如:假如字段的值是abcd,like 'abc' 匹配失败, REGEXP ‘abc’匹配成功;
关于大小写的区分: MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写 。如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY 'Hello .000'