SQL查询字段被包含语句

发布时间 - 2026-01-11 02:28:14    点击率:

前言

说到SQL的模糊查询,最先想到的,应该就是like关键字。

当我们需要查询包含某个特定字段的数据时,往往会使用 ‘%关键字%' 查询的方式。例如:

SELECT ... FROM 表名 WHERE 字段名 LIKE '%关键字%'

这应该可以算是一种典型的”包含XXX”的方式,但如果我们需要查询字段被包含于特定字符的数据时呢?

比如,我有一张联系人数据表ConnectName,其中有个字段用于记录姓名name。我想获取名为小兰和灰原的人的联系资料。正常情况下,我们首先能想到的做法应该是:

SELECT * FROM ConnectName 
WHERE
  name = '小兰'
  OR name = '灰原'

这样的做法是可以实现这种目的的。如果这时候,我突然想,再查一个人,比如说“柯南”,那么我们就要修改SQL的结构,添加一个Where条件句:

SELECT * FROM ConnectName 
WHERE
  name = '小兰'
  OR name = '灰原'
  OR name = '柯南'

我们知道,OR条件查询本身是属于效率较低的,而且结构变动的语句在MyBatis实现稍微麻烦些(当然也是可以实现的,遍历插入字段就行了)。

能不能简单一些呢?我可以把所有关键字放在一起,只用一个Where条件去实现吗?

CHARINDEX登场

这时候,我们就可以用 CHARINDEX 关键字了,CHARINDEX可以返回某个字段在一串文字中出现的位置,跟String的indexOf用法类似,不多废话,我们来举个栗子:

CHARINDEX('李白','曹操很帅') =0

在上面的栗子中,因为曹操很帅不包含李白关键字,所以找不到,返回0.

CHARINDEX('李白','李白很帅') =1

同样的栗子,因为包含里李白关键字,会返回关键字所在的开头第一个字的索引,所以返回1.

了解了使用方法之后,我们就可以运用CHARINDEX关键字优化下我们的SQL语句:

SELECT * FROM ConnectName 
WHERE
  CHARINDEX(name ,'小兰灰原柯南')>0

如果name字段对应的名字在 ‘小兰灰原柯南' 中出现,那么CHARINDEX函数就会返回大于1,就可以得到我们想要的数据啦(他们3个人也可以在一起愉快的玩耍咯^-^)

对应的mybatis实现也相对简洁

SELECT * FROM ConnectName 
WHERE
  <!--[CDATA[ AND CHARINDEX(name ,#{传入的参数}) --> 0 ]]>

如果后期我们想要加入一个新的人,比如毛利小五郎,只需要在传入的参数中加入 ‘小兰灰原柯南毛利小五郎' 就可以了,是不是简单了许多呢?

以上所述是小编给大家介绍的SQL字段的被包含查询语句,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


# sql  # 查询字段包含  # 用SQL语句查询数据库中某一字段下相同值的记录方法  # SQL 查询和删除重复字段数据的方法  # MySQL大表中重复字段的高效率查询方法  # SQL order by ID desc/asc加一个排序的字段解决查询慢问题  # php mssql扩展SQL查询中文字段名解决方法  # SQLSERVER查询所有数据库名  # 表名  # 和字段名的语句  # 李白  # 小兰  # 柯南  # 灰原  # 的人  # 就可以  # 很帅  # 可以实现  # 小编  # 这时候  # 我想  # 就会  # 小五郎  # 有个  # 我有  # 找不到  # 可以用  # 遍历  # 不多  # 只需 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么在Controller之外的地方验证数据  Laravel如何创建自定义中间件?(Middleware代码示例)  如何快速生成橙子建站落地页链接?  Laravel如何使用Telescope进行调试?(安装和使用教程)  如何获取免费开源的自助建站系统源码?  Linux系统命令中screen命令详解  如何在万网利用已有域名快速建站?  ,在苏州找工作,上哪个网站比较好?  米侠浏览器网页背景异常怎么办 米侠显示修复  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何快速上传建站程序避免常见错误?  Java遍历集合的三种方式  如何快速完成中国万网建站详细流程?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  如何在IIS中新建站点并解决端口绑定冲突?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  企业网站制作这些问题要关注  进行网站优化必须要坚持的四大原则  Android okhttputils现在进度显示实例代码  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  网易LOFTER官网链接 老福特网页版登录地址  高端云建站费用究竟需要多少预算?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel如何实现多对多模型关联?(Eloquent教程)  BootStrap整体框架之基础布局组件  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何在企业微信快速生成手机电脑官网?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  网站制作价目表怎么做,珍爱网婚介费用多少?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Swift开发中switch语句值绑定模式  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  WordPress 子目录安装中正确处理脚本路径的完整指南  如何用狗爹虚拟主机快速搭建网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  JS碰撞运动实现方法详解  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  如何用免费手机建站系统零基础打造专业网站?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  浅述节点的创建及常见功能的实现  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  JavaScript常见的五种数组去重的方式  如何在阿里云ECS服务器部署织梦CMS网站?  微信小程序 闭包写法详细介绍