LIKE-后浪云数据库教程-MySQL-模糊查询 (like后面要加ing吗)

教程大全 2025-07-18 19:29:23 浏览

在 MySQL 中,关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:

[NOT] LIKE ‘字符串

其中:

LIKE 关键字支持百分号“%”和下划线“_”通配符。

带有“%”通配符的查询

是 MySQL 中最常用的通配符,它能 代表任何长度的字符串,字符串的长度可以为 0 。例如,表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。该字符串可以代表 ab、acb、accb、accrb 等字符串。

例 1

在 tb_students_info 表中,查找所有以字母“T”开头的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info-> WHERE name LIKE 'T%';+--------+| name|+--------+| Thomas || Tom|+--------+2 rows in set (0.12 sec)

可以看到,查询结果中只返回了以字母“T”开头的学生姓名。

注意: 匹配的字符串必须加单引号或双引号。

表示字符串不匹配时满足条件。

例 2

在 tb_students_info 表中,查找所有不以字母“T”开头的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT NAME FROM tb_students_info-> WHERE NAME NOT LIKE 'T%';+-------+| NAME|+-------+| Dany|| Green || Henry || Jane|| Jim|| John|| Lily|| SuSAN |+-------+8 rows in set (0.00 sec)

可以看到,查询结果中返回了不以字母“T”开头的学生姓名。

例 3

在 tb_students_info 表中,查找所有包含字母“e”的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info-> WHERE name LIKE '%e%';+-------+| name|+-------+| Green || Henry || Jane|+-------+3 rows in set (0.00 sec)

可以看到,查询结果中返回了所有包含字母“e”的学生姓名。

带有“_”通配符的查询

模糊查询

“_”只能代表单个字符,字符的长度不能为 0。 例如,可以代表 acb、adb、aub 等字符串。

例 4

在 tb_students_info 表中,查找所有以字母“y”结尾,且“y”前面只有 4 个字母的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info-> WHERE name LIKE '____y';+-------+| name|+-------+| Henry |+-------+1 row in set (0.00 sec)

LIKE 区分大小写

默认情况下,LIKE 关键字匹配字符的时候是不区分大小写的。如果需要区分大小写,可以加入关键字。

例 5

在 tb_students_info 表中,查找所有以字母“t”开头的学生姓名,区分大小写和不区分大小写的 SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info WHERE name LIKE 't%';+--------+| name|+--------+| Thomas || Tom|+--------+2 rows in set (0.00 sec)mysql> SELECT name FROM tb_students_info WHERE name LIKE BINARY 't%';Empty set (0.01 sec)

由结果可以看到,区分大小写后,“Tom”和“Thomas”等记录就不会被匹配到了。

使用通配符的注意事项和技巧

下面是使用通配符的一些注意事项:

下面是一些使用通配符要记住的技巧。

总之,通配符是一种极其重要和有用的搜索工具,以后我们会经常用到它。

拓展

如果查询内容中包含通配符,可以使用“\”转义符 。例如,在 tb_students_info 表中,将学生姓名“Dany”修改为“Dany%”后,查询以“%”结尾的学生姓名,SQL 语句和运行结果如下:

mysql> SELECT NAME FROM test.`tb_students_info` WHERE NAME LIKE '%\%';+-------+| NAME|+-------+| Dany% |+-------+1 row in set (0.00 sec)

一个关于SQL存储过程的问题

create proc my_procstatus@name nvarchar(50)as if(@name is null or Rtrim(@name) = )beginprint 没有输入名字!return 55end SET @name=RTRIM(@name)if not exists(select 1 from student where RTRIM(name)=@name) beginprint 没找到!return -155end select * from 选课表 where RTRIM(name)=@name

搜索按钮的代码

按纽上的代码很简单,就类似于这样,弄个超连接到action,然后再在action里写方法,用hql语句查询数据库就OK了!至于你想模糊查询、排行查询、具体查询什么的,就看自己怎么写了! 小猪为什么要知道这个呀?你们的头儿让你弄网站呀??

如何读取oracle的包\包体和视图的定义

查看表的定义:set long select dbms__ddl(TABLE,upper(&table_name) from dual ;查看视图的定义:select text from user_views where view_name=upper(&view_name) ;查看index的定义:select dbms__ddl(INDEX,upper(&index_name) from dual ;select index_name,index_type,table_owner,table_name from user_indexes where table_name=TEMP3;查看procedure的定义:select text from user_source where ;查看trigger的定义:select trigger_body from user_triggers where trigger_name=&trigger_name ;

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐