SQL 笔记系列二(查询规则)

2018-11-20  本文已影响0人  _发强

TOP 子句

TOP 子句用于规定要返回的记录的数目。

注释:并非所有的数据库系统都支持 TOP 子句。

语法:

SELECT TOP number|percent column_name(s) FROM table_name
select top 2 * from User -- 查询前 2 条数据

select top 50 percent * from User -- 查询 50% 的数据

MySQL 语法

select column_name(s) from table_name limit number

select * from User limit 5  -- 查询前 5 条数据

Oracle 语法

select column_name(s) from table_name where rownum <= number

select * from User where rounum<=5   -- 查询前 5 条数据

LIKE 操作符

LIKE 操作符 用于在 Where 子句中进行搜索某些特定条件(模糊查询)

语法

select column_name(s) from table_name where column_name like pattern

示例

-- 查询用户表中 手机号码为 1555开头的数据
select * from User where phone_number like '1555%'

-- 查询用户表中 手机号码包含 888 数字的人物姓名
select name from User where phone_number like '%888%'

-- 查询用户表中 手机号码是 6 结尾的所有数据
select * from User where phone_number like '%6'

通配符

通配符 描述
% 替代一个或多个字符
_ 仅代替一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 或者 [!charlist] 不在字符列中的任何单一字符
-- 查询用户表中 名字为三个字,并且中间是 “发” 的用户
select * from User where name like '_发_'

-- 查询 User 表中 手机号码为 1555 开头 包含111 以28结尾的用户
select * from User where phone_number like '1555_111_28'
-- 查询 手机号以0、1、8、9 结尾的用户
select * from User where phone_number like '%[0189]'

注意

[charlist] 通配符在 MySQL 中无效,实现方式是使用正则表达式:

-- To find citys beginning with S or H 
-- 查询用户表中城市名称以 S 或者 H 开头的
select * from User where city REGEXP '^[S|H]'  

-- To find phone_numbers ending with (0 or 1 or 8 or 9)
-- 查询用户表中手机号尾数为 0、1、8、9 的用户。
select * from User where phone_number regexp '[0|1|8|9]$' 

-- To find city containing a 'Z' 
-- 利用正则进行模糊查询,查询用户表中 city 包含 Z 的数据。
select * from User where city rlike 'Z' 

小结

SQL 语句 在 MySQL 中查询规则整理如下:

-- 查询名称以 b 开头的数据(不区分大小写)
select * from User where name like 'b%'

-- 查询名称以 ab 结尾
select * from User where name like '%ab'

-- 查询名称包含 w 字符
select * from User where name like '%w%'

-- 查询名称为 五个字符,使用_模式字符的五个实例
select * from User where name like '_____'

MySQL 使用正则表达式模式匹配

关于正则表达式的一些特征:

示例
正则匹配的关键字是 rlike (等价于 regexp)

-- 查找名称 b 开头 (不区分大小写)
select * from User where name rlike[/regexp] '^b'

-- 查找 名称 a 或者 b 开头
select * from User where name rlike '^[a|b]'

-- 查找名称 a 结尾(不区分大小写)
select * from User where name rlike 'a$'

-- 查找名称 a 或 b 结尾
select * from User where name rlike '[a|b]$'

-- 查找名字中包含 w 字符
select * from User where name rlike 'w'

-- 如果需要强制使用正则表达式区分大小写 请使用 binary 关键字
-- 查找 名字是 A 或者 B (区分大小写)
select * from User where name rlike binary '[A|B]$'

-- 查询名字是 7 个字符的数据 (等同于 where name like '_______')
写法1:select * form User where name rlike '^.......$'
写法2:select * from User where name rlike '^.{7}$'

关于更多 MySQL 的正则表达式请参考 MySQL 8.0 参考手册-正则表达式

上一篇 下一篇

猜你喜欢

热点阅读