sql 查询条件为拼接字符串 不能使用IN 使用patindex查询结果集
题目: 求组织机构ID在('5dc8de20-9f2f-465e-afcc-f69abecaee50','63549b63-1e0d-4269-98f4-013869d7f211','f7316bf3-38e9-47d4-ab95-8c702b468a2e','61e381d1-c8fc-4276-97e0-3f1b6a0356f5') 中的所有机构。
错误写法:
select * from dd_Report where 1=1 and
OrganizationID in
('5dc8de20-9f2f-465e-afcc-f69abecaee50','63549b63-1e0d-4269-98f4-013869d7f211','f7316bf3-38e9-47d4-ab95-8c702b468a2e','61e381d1-c8fc-4276-97e0-3f1b6a0356f5')
and ReportType='1' and DeleteMark =' 1'
将无法查到(63549b63-1e0d-4269-98f4-013869d7f211,5dc8de20-9f2f-465e-afcc-f69abecaee50)这条记录

正确写法:
思路:求OrganizationID与('5dc8de20-9f2f-465e-afcc-f69abecaee50','63549b63-1e0d-4269-98f4-013869d7f211','f7316bf3-38e9-47d4-ab95-8c702b468a2e','61e381d1-c8fc-4276-97e0-3f1b6a0356f5') 的交集数量。
select *
from dd_Report
where 1=1 and ReportType='1' and DeleteMark =' 1' and
dbo.splitstring('''' + replace(OrganizationID,',',''',''') + '''',
'''5dc8de20-9f2f-465e-afcc-f69abecaee50'',''63549b63-1e0d-4269-98f4-013869d7f211'',''f7316bf3-38e9-47d4-ab95-8c702b468a2e'',''61e381d1-c8fc-4276-97e0-3f1b6a0356f5'''
) >0
创建函数
1 USE [CT_DD]
2 GO
3 /****** Object: UserDefinedFunction [dbo].[f_splitSTR] Script Date: 05/20/2016 11:35:44 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 ALTER FUNCTION [dbo].[f_splitSTR](
9 @s varchar(max), --待分拆的字符串
10 @split varchar(10) --数据分隔符
11 )RETURNS @re TABLE(col varchar(100))
12 AS
13 BEGIN
14 DECLARE @splitlen int
15 SET @splitlen=LEN(@split+'a')-2
16 WHILE CHARINDEX(@split,@s)>0
17 BEGIN
18 INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
19 SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
20 END
21 INSERT @re VALUES(@s)
22 RETURN
23 END
1 USE [CT_DD]
2 GO
3 /****** Object: UserDefinedFunction [dbo].[splitstring] Script Date: 05/20/2016 11:38:43 ******/
4 SET ANSI_NULLS ON
5 GO
6 SET QUOTED_IDENTIFIER ON
7 GO
8 ALTER function [dbo].[splitstring]
9 (
10 @str1 varchar(max),
11 @str2 varchar(max)
12 )
13 returns int
14
15 begin
16 declare @num int;set @num=0;
17
18 select @num=COUNT(1) from f_splitSTR (@str1,',') temp where col in (select * from f_splitSTR (@str2,',') temp2)
19
20 return @num;
21
22 end
输出结果:

sql 查询条件为拼接字符串 不能使用IN 使用patindex查询结果集的更多相关文章
- sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")
" ' "(单引号)的运用:在sql server中,两个" ' "(单引号)在拼接字符串的情况下运用,就是表示拼接上了一个" ' "单引号 ...
- 我的一个PLSQL函数 先查询再插入数据库的函数 动态SQL拼接查询条件、通用游标、记录定义(封装部分查询字段并赋值给游标)、insert select 序列、常量【我】
先查询再插入数据库的函数 CREATE OR REPLACE FUNCTION F_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_prod_ ...
- php查询mysql数据库 查询条件替中文字符串变量时无法查询
$temp2 ='十年';mysql_query("SET NAMES GBK"); $res = mysql_query("select songer_name fro ...
- SQL Server数据库存储过程中拼接字符串注意的问题
在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果. 先看一段代码: -- ============ ...
- SQL Server-聚焦强制索引查询条件和Columnstore Index(九)
前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...
- 字符串变量作mysql查询条件
原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...
- SQL Server-聚焦强制索引查询条件和Columnstore Index
前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...
- ibatis动态查询条件
ibatis的调试相对困难,出错的时候主要依据是log4生成的log文件和出错提示,这方面要能比较熟练的看懂. 下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回has ...
- [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
声明 本文对Lambda表达式的扩展,示例代码来源于网络. 场景描述 web开发查询功能的时候,如果查询条件比较多,就会遇到动态组合查询条件的情况.在手写sql的情况下,我们一般会根据传入的参数,针对 ...
随机推荐
- 为什么90%的大学都要求计算机专业学习C语言?
编程语言是编程的工具,计算机相关专业的学生必须具备足够的编程能力.当然,关于"最好语言"的争论从来没有休止过,这里要强调一下:语言的选择真的没那么重要,学习语言的过程最重要是语言的 ...
- SAD DNS--新型DNS缓存中毒攻击
一.DNS基础知识: 1.DNS简介: DNS 域名服务,用于建立 域名与 ip地址的 一对一 映射.DNS 将域名转换为 IP地址,以便浏览器能够加载 Internet 资源. 类似于一个翻译系统, ...
- LeetCode 041 First Missing Positive
题目要求:First Missing Positive Given an unsorted integer array, find the first missing positive integer ...
- 笔记本无法连接校园网,windows诊断显示校园网之未响应
打开cmd(管理员): 输入以下四条,每一条都按enter ipconfig /flushdns ipconfig /registerdns ipconfig /release ipconfig / ...
- Django----Serializer序列化
serializer的两大特征 1.校检数据 2.序列化 首先创建apps/Serializer.py 在序列化里面导包 from rest_framework import serializers ...
- (十八)面向流水线的设计:CPU的一心多用
一.单指令周期 由前可知,一条CPU指令的执行有三个步骤:指令读取.指令译码.指令执行.由于这个过程受CPU时钟的控制,如果我们将这个过程安排在一个CPU时钟周期内执行,这种设计思路就叫单 ...
- Java面试专题-多线程篇(2)- 锁和线程池
- PyQt学习随笔:QTableWidget水平表头horizontalHeader、竖直表头verticalHeader的相关操作方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTableWidget表格部件的表头包括水平表头和竖直表头,水平表头每节对应表格的一列,竖直表头对 ...
- centos 6.4-linux环境配置,安装hadoop-1.1.2(hadoop伪分布环境配置)
1 Hadoop环境搭建 hadoop 的6个核心配置文件的作用: core-site.xml:核心配置文件,主要定义了我们文件访问的格式hdfs://. hadoop-env.sh:主要配置我们的j ...
- python爬虫--用xpath爬豆瓣电影
步骤 将目标网站下的页面抓取下来 将抓取下来的数据根据一定规则进行提取 具体流程 将目标网站下的页面抓取下来 1. 倒库 import requests 2.头信息(有时候可不写) headers ...