MsSql

关注公众号 jb51net

关闭
首页 > 数据库 > MsSql > sql regexp与like

sql中的regexp与like区别实现

作者:Seal^_^

本文详细介绍了正则表达式REGEXP和LIKE语句的用途,使用它们进行模式匹配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、REGEXP

SELECT column_name FROM table_name WHERE column_name REGEXP 'pattern';

其中,column_name是要进行匹配的列名,table_name是要查询的表名,pattern是要匹配的正则表达式模式。

以下是一些常见的正则表达式元素及其含义:

使用示例:

查找包含特定单词的行

SELECT column_name FROM table_name WHERE column_name REGEXP 'a';

查找以特定单词开头的行

SELECT column_name FROM table_name WHERE column_name REGEXP '^a';

查找以特定单词结尾的行

SELECT column_name FROM table_name WHERE column_name REGEXP 'a$';

查找包含特定字符集合的行

SELECT column_name FROM table_name WHERE column_name REGEXP '[abc]';

查找不包含特定字符集合的行

SELECT column_name FROM table_name WHERE column_name REGEXP '[^abc]';

查找包含多个模式之一的行

SELECT column_name FROM table_name WHERE column_name REGEXP 'pattern1|pattern2';

2、LIKE

SELECT column_name FROM table_name WHERE column_name LIKE pattern;

其中,pattern 可以包含文字字符、%(代表任意数量的字符,包括零个字符)和 _(代表一个任意字符)。

使用示例:

查找包含特定文本的行

找出 column_name 中包含 “text” 的所有行,你可以这样写:

SELECT * FROM table_name WHERE column_name LIKE '%a%';

查找以特定文本开头的行

如果你想找出 column_name 以 “prefix” 开头的所有行,你可以这样写:

SELECT * FROM table_name WHERE column_name LIKE 'a%';

查找以特定文本结尾的行(注意:LIKE 本身不直接支持以特定文本结尾的匹配,但可以通过反转字符串和模式来实现):

例如,在 MySQL 中,可以使用 REVERSE() 函数(如果可用)来反转字符串和模式,然后进行匹配:

SELECT * FROM table_name WHERE REVERSE(column_name) LIKE REVERSE('%a');

这种方法可能不是所有数据库系统都支持的,且可能不如直接使用 REGEXP 或其他数据库特定的函数高效。

查找包含特定字符(但不是任意字符)的行

如果你想查找 column_name 中第二个字符是 “a” 的所有行,你可以使用 _ 来表示第一个任意字符,然后紧跟 “a”:

SELECT * FROM table_name WHERE column_name LIKE '_a%';

注意事项:

3、区别与选择

到此这篇关于sql中的regexp与like区别的文章就介绍到这了,更多相关sql regexp与like 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文