在 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 ;
发表评论