前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >sql模糊查询,字段多值模糊查询(字段分割搜索,字符串转行)

sql模糊查询,字段多值模糊查询(字段分割搜索,字符串转行)

作者头像
stys35
发布于 2020-12-09 06:22:45
发布于 2020-12-09 06:22:45
6.2K0
举报
文章被收录于专栏:工作笔记精华工作笔记精华

对于平时简单的查询,一般使用like就能解决问题。如果字段值不连续,使用like就有点乏力了。

在工作中遇到这种业务,特整理如下文章,如果有更高效的解决方案,也望推荐互相学习。

1.表中数据如下:select * from MyTest

2.如果搜索表中 ”苹果" 数据,很简单就能搞定:select * from MyTest where name like '%苹果%'

3.简单小升级下,业务需要查找 “苹果,香蕉” 这种在数据库连续存放的数据,还是很简单:select * from MyTest where name like '%苹果,猕猴%'

4.现在业务大升级,需要查找 “苹果,猕猴” 这种不连续的数据,并且只要符合其中一个字段值,结果集就要包含其中。

对于这种查找,最直接想法:分割字符串,循环遍历去查询。这种方式性能不说,感觉就是一坨枯燥的东西。此业务首先源于数据库

设计如此,生成环境中”大量器件编号”通过逗号分隔存放在一个字段,前端参数顺序可变,所以产出此文章,也帮助遇到类似业务的朋友。

代码先呈现:之后做分析

+ View Code

结果如下:

总结:

  1.先把字符串转成XML格式,例如把“苹果,猕猴” 字符串装换成“<v>苹果</v><v>猕猴</v>”XML格式

    SELECT [value]=CONVERT(XML,'<v>'+REPLACE('苹果,猕猴',',','</v><v>')+'</v>')

  2.核心:考虑把XML字符串分割成多行,也就是字符串转行功能。 

   参考文章:http://topic.csdn.net/u/20091023/17/CF3F75D1-DE50-4EE1-B9BE-43E4AF3C62EF.html

declare @xmlStr xml set @xmlStr= CONVERT (XML, '<v>' + REPLACE ( '苹果,猕猴' , ',' , '</v><v>' )+ '</v>' ) SELECT N.v.value( '.' , 'varchar(100)' ) FROM @xmlStr.nodes( '/v' ) N ( v )

  3.OUTER APPLY函数的使用。

  参照文章:http://www.cnblogs.com/end/archive/2011/02/17/1957011.html

  4.原数据集inner join 字符串结果集,再查询inner join之后的结果集,筛选过结果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
JavaScript基础笔记
摘要: 1.语句 2.变量 2.1变量提升 3.标识符 4.注释 5.区块 6.条件语句 6.1 if 结构 6.2 if…else结构 6.3 switch结构 6.4三元运算
小胖
2018/06/27
1.3K0
Java Script脚本语言入门(上)
JavaScript没有char数据类型,要表示单个字符,必须使用长度为1的字符串。
海盗船长
2020/08/27
1.7K0
javaScript的基本语法大全
JavaScript 程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。
Java深度编程
2020/06/10
1.1K0
javaScript的基本语法大全
《C++Primer》第五章 语句
身为C++的零基础初学者,短期内把《C++Primer》啃下来是一个比较笨但是有效的方法,一方面可以掌握比较规范的C++语法(避免被项目中乱七八糟的风格带跑偏),另一方面又可以全面地了解C++语法以及C++11新标准(后续要做的事情就剩下查漏补缺,不断完善自己的知识体系)。
TOMOCAT
2020/12/02
1K0
JavaScript 权威指南第七版(GPT 重译)(二)
本章记录了 JavaScript 表达式以及构建许多这些表达式的运算符。表达式 是 JavaScript 的短语,可以 评估 以产生一个值。在程序中直接嵌入的常量是一种非常简单的表达式。变量名也是一个简单表达式,它评估为分配给该变量的任何值。复杂表达式是由简单表达式构建的。例如,一个数组访问表达式由一个评估为数组的表达式、一个开放方括号、一个评估为整数的表达式和一个闭合方括号组成。这个新的、更复杂的表达式评估为存储在指定数组索引处的值。类似地,函数调用表达式由一个评估为函数对象的表达式和零个或多个额外表达式组成,这些额外表达式用作函数的参数。
ApacheCN_飞龙
2024/03/23
6410
JavaScript 权威指南第七版(GPT 重译)(二)
sql server T-SQL 基础
SQL语言按照用途可以分为如下3类: ①DDL(Data Definition Language)  数据定义语言:    定义修改和删除数据库、表、索引和视图等 ②DML(Data Manipulation Language)  数据处理语言:    对数据进行查询(SELECT)、插入(INSERT)、删除(DELETE)、更新(UPDATE)等 ③DCL(Data Control Language)  数据控制语言:    对数据库对象的权限管理和事务管理 一、T-SQL语法基础 1.标识符 在SQL
欠扁的小篮子
2018/04/09
2.2K0
sql server   T-SQL 基础
Javascript入门学习
本文介绍了技术社区在内容编辑人员工作中需要注意的五个关键点,分别是:1)正确性,确保内容准确无误;2)简洁性,让内容易于理解;3)一致性,遵循统一的写作风格;4)可阅读性,使用简单易懂的语言;5)可传播性,内容易于分享和流传。同时,还探讨了技术社区中常见的几种内容类型,如FAQ、知识库、教程、指南、实战案例和技术新闻等,以及如何进行内容整合和优化,以提高技术社区的活跃度和用户满意度。
别先生
2017/12/29
2.2K0
Javascript入门学习
JavaScript基础-第2章
变量名以字母或下划线("_")开头 变量可以包含数字、从 A 至 Z 的大小写字母 JavaScript 区分大小写
达达前端
2019/07/03
3130
JavaScript基础-第2章
JavaScript 变量,语句
let 块级作用域,不允许重复声明,不存在变量提升,值在当前作用域内生效,在使用未定义的变量会报错。
用户1197315
2019/11/07
9590
条件循环语句组成了Python代码的骨架
我们都知道流程图是有多个分支的,程序中也是如此,在Python中是用if语句来判断程序该走哪个分支的。它的执行过程如下:
dongfanger
2020/12/11
9510
条件循环语句组成了Python代码的骨架
05_JavaScript基本语法
程序开发中,经常需要自定义一些符号来标记一些名称,并赋予其特定的用途,如变量名、函数名等,这些符号都被称为标识符。
张哥编程
2024/12/13
1010
JavaScript的循环语句
for循环是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力。以下是for循环的语法:
小小鱼儿小小林
2020/06/24
1.1K0
实现JavaScript语言解释器(二)
在上一篇文章中我为大家介绍了Simpe项目的一些背景知识以及如何使用有限状态机来实现词法解析,在本篇文章中我将会为大家介绍语法分析的相关内容,并且通过设计一门内部DSL语言来实现Simple语言的语法解析。
进击的大葱
2022/08/22
6370
实现JavaScript语言解释器(二)
JavaScript 循环语句
for语句是循环命令的另一种形式,可以指定循环的起点、终点和终止条件。它的格式如下。
RiemannHypothesis
2022/10/06
5030
javascript 跳跃式前进 (1) - 基本概念
javascript 是弱类型语言,比较接近python和perl这类,不如java和c那样严格.所以写惯了强类型语言的小伙伴看到有些另类的写法也相当正常;
CRPER
2024/02/25
1290
JavaScript语句-流程控制语句
JavaScript定义了一组语句,语句通常用于执行一定的任务。语句可以很简单,也可以很复杂。 选择结构,可以在程序中创建交叉结构来指定程序流的可能方向。JavaScript中有四种选择结构: 1.单选结构(if) var x=5; if(x>0){ console.log(x);//输出5 } 单选结构由单独的if语句组成,只能控制程序的一个流向。 2.双选结构(if/else) var x=5; if(x===undefined){ x=3; } else{ console.log(x)
水击三千
2018/02/27
1.5K0
JavaScript(三)
ECMA 描述了一组用于操作数据值的操作符。包括: 算数操作符、位操作符、关系操作符以及相等操作符等。
1ess
2021/10/29
5190
1.2w字 | 初中级前端 JavaScript 自测清单 - 1
前言 最近与部门老大一起面试了许多前端求职者,其中想换个学习氛围较好的人占多数,但良好的学习氛围也是需要一点点营造出来的🌺。 为此我们组建了我们团队内部的“现代 JavaScript 突击队”,第一期学习内容为《现代 JavaScript 教程》系列,帮助小组成员系统地进行学习巩固,并让大家养成系统性学习和输出学习总结的学习方式。 本文作为我输出的第一部分学习总结,希望作为一份自测清单,帮助大家巩固知识,温故知新。 这里也下面分享我们学习小组的“押金制度”和“押金记录表”🍀 [“押金制度”和“押金记录表”]
pingan8787
2020/07/04
1.2K0
前端-javascript简写技巧
本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读。
grain先森
2019/03/29
1.6K0
前端-javascript简写技巧
JavaScript大略
 简介: javascript是一种基于对象和事件驱动并具有安全性能的脚本语言。 它是通过嵌入或调入在标准的HTML语言中实现的。 数据类型:   String 字符串类型:字符串是用单引号或双引号来说明的。(使用单引号来输入包含双引号的字符串。)   number 数值数据类型:javascript 支持整数和浮点数。   Boolean 类型:可能的 Boolean 值有 true 和 false。这是两个特殊值,不能用作 1 和 0。   Undefined 数据类型:指变量被创建后,但
用户1075292
2018/01/23
7220
相关推荐
JavaScript基础笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档