SQL LIKE 通配符

  • SQL LIKE &通配符简介
    • LIKE 操作符
    • 通配符
      • 通配符 %
        • 还有就是当你想查询比如说既有林 又有江的 那怎么查询呢?
        • 还有就是当我要查询的字符内有%这个符号怎么办?
      • 通配符 _
      • 通配符 [ ]

SQL LIKE &通配符简介

!无论什么类型,都可以使用LIKE +通配符来进行模糊筛选

LIKE 操作符

SQL 中LIKE 一般与通配符一起使用
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
语法:

SELECT MyName --列名
FROM MyTable--表明
WHERE MyName LIKE pattern; -- LIKE 指定模式为Pattern 在MyName内查找

通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用,用于搜索表中的数据。
在 SQL 中,可使用以下通配符:

通配符 描述 使用方法
% 替代0或多个字符 LIKE 查询字符 前或后接 % 用于替代零到多个字符
_ 替代一个字符 LIKE 查询字符 前或后接 _ 用于替代一个字符
[ charlist] 字符列中的任何单一字符 表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
[ ^charlis ]或 [ !charlist ]s 不在字符列中的任何单一字符 表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

语法:

-- % 语法
SELECT MyName --列名
FROM MyTable--表明
WHERE MyName LIKE '林%'; -- 指定查询列中 林什么什么的 % 代表零到多个字符
-- _ 语法
SELECT MyName --列名
FROM MyTable--表明
-- 指定查询列中 林什么 _ 代表一个字符 当_位置处于林前面,就带表查询什么林的
WHERE MyName LIKE '林_';

通配符 %

% 替代0或多个字符
如下实例
% 实例
age 是int 类型 匹配2开头的不定长的字符串 当%在前面就是匹配2结尾的不定长字符串

需要注意的是,当我使用模糊查询的结果的是使用定长字符串类型来进行存储的时候如下图,

从第一个查询语句可以看到,明明原表是拥有以子结尾的Name字段,
可第二个 查询语句却没有查询到数据
这是因为,Name是使用定长字符串类型进行存储的,所以在存储的字符串不满足定义存储长度时,就会在字符串右边使用空格进行填充已满足定义的字符串存储长度
额,就是,当你定义name这个列的存储长度是五个时(nchar(5)),你存入,字段付子,付子只有两个字符串长度,不满足定义的存储长度5个,那数据库就会在付子后面添加三个空格,也就是说这个时候数据库中实际存储付子这个字段,不是存储喂
‘付子’
而是存储为
'付子 ’
所以说第二个查询语句模糊查询条件,是查询不到结果的,因为数据库中的’付子’后面还带了三个空格

WHERE Name lIKE '%子'--查询不到'付子   '

那怎么解决呢?
嗯,既然它后面还有三个空格,那我就在查询条件里加三个空格,
这样能,可以是可以,只不过当你不知道你要查询的字符串后面有多少字符串的时候,这样就很无力了
如上图,当在后面加上数据库自动补全的空格之后,第二个查询就有结果了
但我们还有其他的办法
就是在子后面也加上通配符% 如下图

通配符 % ,匹配零个或多个字符,空格,也被当作字符
但是一般不推荐这样去查询,其实一般也不推荐直接使用模糊查询
因为模糊查询实在是太耗资源了,特别是数据量大了的时候
向上面的,如果知道年龄,一般会先使用年龄进行筛选,然后再在结果里面使用模糊筛选法筛选出需要的结果
如果不知道年龄一般也会使用函数Rtrim()去除 ,如下图

还有就是当你想查询比如说既有林 又有江的 那怎么查询呢?

SELECT *
FROM MyTables
WHERE  Name Like '%江%涛%'

像上面的语句一样吗?,
不! 那样是不行的
那样只能查询出来诸如狗江涛,猪江涛,或是狗江狗涛狗,什么乱七八糟的,好像确实能查出好多东西出来
但万一有个人叫狗涛江呢???
那上面的查询语句就不能满足查询到了
所以当你要查询这种既有什么什么又有什么什么的,就是用关键字 ADN

SELECT *
FROM MyTables
WHERE  Name Like '%江%' AND Name Like '%涛%'

还有就是当我要查询的字符内有%这个符号怎么办?

这个会在下面一起讲

通配符 _

通配符 _ 的使用方法和 % 的使用方法一样 所以这不再赘诉
区别是 _ 只能替代一个字符,而 % 能替代0~无数个字符

通配符 [ ]

表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
如下我想查找 林江猪,林江狗,林江涛

SELECT *
FROM MyTable
WHERE Name Like '林江[猪狗涛]'

将查询出 ,当然,因为这里使用的是定长说这里使用一下Rtrim函数去除一下Name列的右空格
然后,回到上面的问题,当我们想要查询的结果里面有%这个符号怎么办,比如说我们要查找叫江%的人怎么办
有两种方法,一种是使用转义字符,还有一种就是向我下面这样,将它丢进通配符[]里面

SELECT *
FROM MyTable
WHERE Name Like '%江[%]' --查询叫什么什么江%的

如下图可以看到,我们查询到了一个叫林江%,( 因为 _ 的使用方法和 % 一样 所以就不做重复了)
那如果我要查询林江1,林江2,林江3,林江3,林江涛,林江 鹅 狗 猫 怎么查呢?
一个一个吗?那样太麻烦了,可以缩写一下

 SELECT *FROM MyTablesWHERE RTRIM(Name) like '林江[1-3涛鹅狗猫]' --当条件是连续的如12345可以使用1-5来替代,--当查询条件不是连续的时,就只能老老实实写了

由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

r如查询林江%_[]可以这样写

SELECT MyName --列名
FROM MyTable--表明
WHERE MyName LIKE '林江[%_[]]';

照上面那样写的话,显然是错的,不信,你自己读读看那是什么意思,你自己都读不出来,计算机怎么读的出来,像这种情况,就只能老老实实使用转义字符了

SQL LIKE通配符 模糊查询相关推荐

  1. MySQL 数据库 like 语句通配符模糊查询小结

    MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)--MySQL 数据库 like 语句通配 ...

  2. SQL语言_3 模糊查询和聚合函数

    SQL语言_3 模糊查询和聚合函数 作者:田超凡 版权所有,转载请注明原作者,仿冒侵权必究法律责任 1.数据库中查询的机制 查询是针对数据表中已存在的数据行而言的,可以将它简单理解为筛选,将符合条件的 ...

  3. MySQL通配符模糊查询

    一.MySQL通配符模糊查询(%,_) "%" 百分号通配符: 表示任何字符出现任意次数 (可以是0次). "_" 下划线通配符:表示只能匹配单个字符,不能多也 ...

  4. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  5. java中sql模糊查询_模糊查询的sql语句(java模糊查询sql语句)

    模糊查询的sql语句(java模糊查询sql语句) 2020-07-24 11:06:02 共10个回答 假设表名为product,商品名为name,简界为remark.则可如下写:select[na ...

  6. oracle模糊匹配date类型日期,SQL时间类型模糊查询

    SQL时间类型模糊查询 数据库类型为DateTime类型,将其做模糊查询时,在Hibernate中,可以用拼SQL的问题将其解决,即在SQL查询分析器写SQL一样,但是利用参数配置,则方法如下: 1. ...

  7. SQL Server -- LIKE模糊查询

    From: http://www.cnblogs.com/kerrycode/archive/2010/10/14/1851535.html 今天写个动态脚本,需要把数据库里面包含"USER ...

  8. SQL多字段模糊查询

    http://user.qzone.qq.com/382164370#!app=2&via=QZ.HashRefresh&pos=1346996967 代码是在VC++里面: CStr ...

  9. C#EF中,使用类似于SQL中的% 模糊查询

    最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF ...

  10. c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能

    大家好,今日继续讲解<VBA数据库解决方案>,今日讲解的内容是:利用ADO,实现模糊查询.在上一讲中,我们实现了利用ADO快速查找的功能,今日我们实现工作表中模糊查找的功能.我们仍是利用上 ...

最新文章

  1. linux系统ip策略筛选器,在Linux下基于路由策略的IP地址控制
  2. android键盘映射(转)-- good 1,android UI
  3. 常用的js验证数字,电话号码,传真,邮箱,手机号码,邮编,日期
  4. 文巾解题 面试题 01.04. 回文排列
  5. jquery操作iframe
  6. android新拟态实现方法,Android 新拟态UI (Neumorphism)
  7. .Net Core手撸一个基于Token的权限认证
  8. linux修改文件没有备份,归档模式,恢复没有备份的数据文件
  9. PHP获取grpc请求时间,Go gRPC进阶-超时设置(六)
  10. OpenGL ES 之 2D 纹理介绍和使用
  11. 7-3 求分数序列前N项和 (15分)
  12. 技术分享 | binlog 实用解析工具 my2sql
  13. java程序性能优化(实例)
  14. 【日拱一卒行而不辍20221010】自制操作系统
  15. Winform基础入门(一)
  16. 百度算法最新更新介绍之烽火算法
  17. 电影推荐之《指环王:双塔奇兵》 隐私策略(Privacy policy)
  18. arcmap 多边形向外扩展100km并转化为json示例
  19. centos7安装ftp服务登录不上的坑总结
  20. js 获取重定向后的地址

热门文章

  1. 图像转换 - base64
  2. js实现bin2hex和hex2bin
  3. CTF-bugku-crypto-[简单加密]-凯撒密码的base64形式
  4. c语言生日创意代码_C语言如何编程生日快乐代码
  5. java网上订餐系统怎么做_基于Java的网上订餐系统
  6. 变分模态分解(VMD)-Python代码
  7. Linux 下安装杀毒软件 clamav
  8. java来电报名字的软件_读短信来电报姓名最新版
  9. 【软件工程习题答案】第八章 维护
  10. VS编译器中QT版本问题不正确解决方法-Please assign a Qt installation in ‘Qt Project Settings‘.