【SQL】字段筛选出含有某些关键词,模糊匹配LIKE的用法

5 篇文章 0 订阅

如果我们要查询数据库中,某个字段含有一些文字,例如查名字的时候,查询开头含有某些姓氏的人,或者查询以某些符号结尾的文字,都可以用模糊匹配来查询字段,WHERE子句+LIKE 的操作符搜索。

以下是一些使用示例:

1. 基本模糊匹配&转义通配符的处理

使用%作为通配符来匹配任意数量的字符。

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

这将选择column_name中以"pattern"开头的所有行。

如果是筛选网址的时候,例如未处理的网址是长这样:

//mp.csdn.net

因为上面有转义通配符,会给如果用上面的查询会跳出报错:

“1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘like ‘/%’’ at line 1”

在这里插入图片描述这时候要用反转义符的写法就能解决这个问题啦:

SELECT net FROM table_name WHERE net LIKE '\/%'

其他转义通配符的处理

如果模式中包含通配符字符(%_),也可以使用ESCAPE子句来转义它们。

SELECT * FROM table_name WHERE column_name LIKE 'p\%attern%' ESCAPE '\';

这将搜索column_name中包含"p%attern"的行,其中%被视为文字字符而不是通配符。

2. 任意位置的匹配

使用%通配符可以在模式的任何位置使用,包括中间和末尾

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

这将选择column_name中包含"pattern"的所有行。

3. 多个筛选条件的匹配查询

可以结合使用ANDOR来匹配多个模式。

SELECT * FROM table_name WHERE column_name LIKE 'pattern1%' OR column_name LIKE '%pattern2';

这将选择column_name中以"pattern1"开头或包含"pattern2"的所有行。

4. 单字符的匹配,可以匹配中间的字段

如果是类似查询 “李X明” 这样的名字的格式的时候,可以用这种方法:

使用_(下划线)作为通配符来匹配任意单个字符。

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

这将选择column_name中第四个字符是任意字符,且以"p"开头并以"tern"结尾的所有行。

5. 使用NOT进行否定匹配

如果需要查询网址,类似除了“http” 、“www.”开头的其他网址的格式,可以使用这种:

使用NOT LIKELIKE ... ESCAPE来进行否定的模糊匹配。

SELECT * FROM table_name WHERE column_name NOT LIKE 'pattern%';

这将选择column_name中不以"pattern"开头的所有行。

6. ILIKE(不区分大小写的LIKE)

在某些数据库系统中(如PostgreSQL),可以使用ILIKE来进行不区分大小写的模糊匹配。

SELECT * FROM table_name WHERE column_name ILIKE 'PATTERN%';
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值