SQL中Like的语法

SQL中Like的语法

欢迎你~~
我等你很久了呢

你好! 这是我第一次写。请大家多多支持。

Like的运用场合主要在模糊查询的时候 , 一般以查询字符串居多 , 这里据一些例子来说他的一般用法:
首先是Like的语法:

SELECT “栏位名”
FROM “表格名”
WHERE “栏位名” LIKE {套式};

以下是几个例子:

  • ‘A_Z’: 所有以 ‘A’ 起头,且以 ‘Z’ 为结尾的字串。例如: ‘ACZ’ 或者 ‘A3Z’ 都符合这一个模式,而
    ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字原,而不是一个字原)。
  • ‘ABC%’: 所有以 ‘ABC’ 起头的字串。例如,‘ABCD’ 和 ‘ABCABC’ 都符合这个套式。
  • ‘%XYZ’: 所有以 ‘XYZ’ 结尾的字串。同理,例如,‘WXYZ’ 和 ‘ZZXYZ’ 都符合这个套式。
  • ‘%AN%’: 所有含有 ‘AN’ 这个套式的字串。举例来说, ‘ok ANGELES’ 和 ‘1AN DIAOCHAN’
    都符合这个套式。

我们将以上最后一个例子用在我们的 Info 表格上:

NameSalesDate
ok ANGELES2222020- 01-15
1AN DIAOCHAN3332020- 01-15
Dashes4442020- 01-15

写代码:

SELECT * FROM Info --表名  
where Name Like '%AN%'

查询结果:

NameSalesDate
ok ANGELES2222020- 01-15
1AN DIAOCHAN3332020- 01-15

补充:

  1. 查询name字段中包含有“变量”字的。
select * from 表名 where name like '%变量%'

这里不要使用*来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用%。
不过在首或尾使用可以相互替换,如果在头尾同时使用的话,就必须要使用%。

  1. 查询name字段中以“李”字开头。
select * from 表名 where name like '李*'

或者

select * from 表名 where name like '李%'
  1. 查询name字段中含有数字的。
select * from 表名 where name like '%[0-9]%'
  1. 查询name字段中含有小写字母的。
select * from  表名  where name like '%[a-z]%'
  1. 查询name字段中不含有数字的。
select * from 表名  where name like '%[!0-9]%'
SQL 中,`LIKE` 是一个用于模糊匹配字符串的运算符,常用于 `WHERE` 子句中对 `CHAR`、`VARCHAR` 等文本类型字段进行模式匹配。 --- ## 一、基本语法 ```sql SELECT column1, column2, ... FROM table_name WHERE column_name LIKE pattern; ``` - `pattern` 是你定义的匹配规则。 - 可以使用通配符来构建模式。 --- ## 二、常用通配符 | 通配符 | 描述 | 示例 | |--------|------|------| | `%` | 匹配任意数量(包括零个)的字符 | `'a%'`、`'%abc%'` | | `_` (下划线) | 匹配单个字符 | `'a_c'` 表示 a 开头,中间任意一个字符,结尾为 c | | `[]` | 匹配括号内的任意一个字符(SQL Server 支持) | `[abc]` 表示匹配 a 或 b 或 c | | `[^]` 或 `![]` | 不匹配括号中的任意一个字符(SQL Server) | `[^abc]` 表示不匹配 a、b、c | | `[A-Z]` | 匹配 A 到 Z 的任意一个字母(仅 SQL Server / Oracle 支持) | `'John[A-Z]'` | --- ## 三、示例说明 ### 示例 1:查找所有以 "Tom" 开头的名字 ```sql SELECT * FROM users WHERE name LIKE 'Tom%'; ``` **结果匹配**: - Tom - Tommy - Tom_Hanks --- ### 示例 2:查找名字中包含 "john" 的记录(不区分大小写) 注意:`LIKE` 默认是区分大小写的(MySQL 默认不区分,但可以配置),若要强制忽略大小写,可使用函数: ```sql SELECT * FROM users WHERE LOWER(name) LIKE '%john%'; ``` --- ### 示例 3:查找名字第二个字符是 "o" 的记录 ```sql SELECT * FROM users WHERE name LIKE '_o%'; ``` **结果匹配**: - Tom - Bob - Lola(只看前两个字符) --- ### 示例 4:查找名字以 "Smith" 结尾的记录 ```sql SELECT * FROM users WHERE name LIKE '%Smith'; ``` --- ### 示例 5:查找名字中第3个字符是 "h" 的记录 ```sql SELECT * FROM users WHERE name LIKE '__h%'; ``` 例如: - John → 第三个字符是 h ✅ - Chris → 第三个字符是 r ❌ --- ## 四、结合 NOT 使用 ```sql SELECT * FROM users WHERE name NOT LIKE '%@example.com'; ``` 这个语句会筛选出邮箱地址 **不以** `@example.com` 结尾的用户。 --- ## 五、性能注意事项 - `LIKE` 以 `%` 开头时(如 `'%'abc`),无法使用索引,会导致全表扫描。 - 如果需要频繁进行复杂文本搜索,建议使用全文搜索引擎(如 Elasticsearch)或数据库的全文索引功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值