首页 > 数据库 >SQL模糊查询

SQL模糊查询

时间:2022-11-04 15:33:06浏览次数:44  
标签:LIKE 模糊 查询 user SQL WHERE SELECT name

在SQL Server中一般查询数据库我们用到的是完整查询,在查询的时候是需要我们把全部完整的条件都输入进来才可以查询到结果的,如果说你查询的条件有一点的不对就不会查询到结果,这样在库里数据很多的时候或者说我们记不清楚数据的时候就很容易查询不到结果的。
为了解决这个问题,我们可以使用模糊查询。所以可以说模糊查询是概念不清的查询,因为一个字就可以查询到数据库里面带有这个字的数据,方便用户查询。

模糊查询的一般语句:

SELECT 字段 FROM 表 WHERE 某字段 Like 条件
1
其中关于条件,SQL给了四种匹配模式

1、%
表示任意0或者多个字符,可以匹配任意类型和长度的字符,如果使用的是中文,需要使用两个百分号(%%)来表示。
比如

SELECT * FROM [user] WHERE u_name LIKE '%三%
1
这个语句可以把User表中的u_name数据中带有“三”这个字的所有的记录都查询出来,显示在下方的表格中,供用户挑选使用,名称可以有----张三”,“张猫三”、“三脚猫”,“唐三藏”。

另外,如果需要查询u_name中带有“三”和“猫”中的记录,需要使用and条件

SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%
1
2、_
表示任意单个字符,匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如

SELECT * FROM [user] WHERE u_name LIKE '_三_
1
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如

SELECT * FROM [user] WHERE u_name LIKE '三__';
1
只找出“三脚猫”这样name为三个字且第一个字是“三”的;

3、[ ]
表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
比如

SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
1
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”

SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
1
将找出“老1”、“老2”、……、“老9”;

4、[^ ]
表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
比如

SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
1
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
1
将排除“老1”到“老4”,寻找“老5”、“老6”、……

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

function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

标签:LIKE,模糊,查询,user,SQL,WHERE,SELECT,name
From: https://www.cnblogs.com/ysl666/p/16857975.html

相关文章

  • 学习笔记-mysql
    mysqlmy.cnf配置文件port=3309socket=/usr/local/mysql/tmp/mysql.sock[mysqld]#服务器端配置!include/usr/local/mysql/etc/mysqld.......
  • MySQL
    MySQLMySQL基础篇MySQL概述数据库相关概念名称概念简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大......
  • SQL SERVER 中 sys.dm_tran_locks 消息 297,级别 16,状态 1,第 6 行 用户没有执行此操
     SQLSERVER中 sys.dm_tran_locks 消息297,级别16,状态1,第6行用户没有执行此操作的权限。--1.查询数据库阻塞与死锁的进程清单(可分析清单详情,看看死锁id对应的......
  • Installing MySQL-8028 on CentOS 8.3
    一、InstallingMySQL-8028onCentOS8.31地址https://www.mysql.comhttps://downloads.mysql.com/archives/community2下载图片 二、下载&解压1wge......
  • SQLite简单使用
    SQLite是什么?首先它是一个数据库有什么特点?是一个嵌入式的数据库,存储形式为一个文件,不需要任何配置,比如说在python中想使用它,直接import简单使用#导入数据库imp......
  • mysql创建数据库经典题型
     【简答题】有一个XSKC数据库,数据库中包括两个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在院系(Sdept)五个属性组成,记为:Student(Sno,Sn......
  • JSONArray数据值作为条件查询时--in
    背景:需要查询一段业务并且是以JSONArray中的值作为判断条件之一的:json_contains(字段名,json_array(值),'$') 数据库字段:  SQL写法:   lambdaQuery写法:......
  • 查看mysql中SQL的执行计划
    查看sql语句通过数据引擎优化后的执行计划--关键字EXPLAINEXTENDED--sql语句SELECT*FROMp_user_role_refLEFTJOINp_roleONp_role.role_id=p_user_role_ref.ro......
  • mysql中如何执行关联查询
    一、内连接1.1、SQL1.2、伪代码二、内连接2.1、SQL2.1、伪代码......
  • postgresql数据库数组(Integer)类型避坑
     前提:业务需要把时间戳(秒)数组,存到一个字段,存入后的数据结构:{1659283200,1661961600}entity类配置 @Data@TableName("a")publicclassDispSocBillextendsBaseEnti......