• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 谈谈SQL查询字段被包含语句问题

谈谈SQL查询字段被包含语句问题

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了语句,包含,字段等相关知识,希望本文的分享对您有所帮助
说到SQL的模糊查询,最先想到的,应该就是like关键字。当我们需要查询包含某个特定字段的数据时,往往会使用 ‘%关键字%’ 查询的方式。具体代码示例大家参考下本文

前言

说到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查询字段被包含语句问题的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL Order by 语句用法与优化详解
  • 解析Mysql多表查询的实现
  • 浅析mysql 语句的调度优先级及改变
  • 解析SQL 表结构信息查询 含主外键、自增长
  • msyql show命令汇总
  • 深入mysql外键关联问题的详解
  • SQL语句中SUM与COUNT的区别深入分析
  • 用SQL实现统计报表中的"小计"与"合计"的方法详解
  • 基于SQL中SET与SELECT赋值的区别详解
  • 基于sql语句的一些常用语法积累总结

相关文章

  • 2018-12-05oracle 11g em重建报唯一约束错误解决方法
  • 2018-12-05管理数据记录的图文详解(phpMyAdmin的使用教程4)
  • 2018-12-05mysql5.7.21 winx64安装配置图文分享
  • 2017-05-11mysql执行时间为负数的原因分析
  • 2018-12-05Oracle9iPL/SQL编程的经验小结
  • 2018-12-05MySQL配置文件无法修改的解决方案详解(Win10)
  • 2018-12-05一句Sql把纵向表转为横向表,并分别分组求平均和总平均值
  • 2017-05-11MySQL实现差集(Minus)和交集(Intersect)测试报告
  • 2018-12-05将MySQL从MyISAM转换成InnoDB错误和解决办法
  • 2018-12-05mysql 读写分离(实战篇)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • oracle 分页问题解决方案
    • MySQL GROUP BY 语句
    • mysql中用正则表达式进行搜索匹配教程(三)
    • MySQL主从复制实战-基于GTID的复制代码分享
    • Oracle启动时出现ORA-32004报错的解决方法
    • MSSQL汉字转拼音函数实现语句
    • mongodb性能优化
    • Mysql系列(三)数据库特性
    • mysql-connector-odbc-5.1.13-win32.msi安装成功后,ODBC数据源管理器无法显示该MySql驱动的问题
    • mysql中DAO模式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有