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的情况下,我们一般会根据传入的参数,针对 ...
随机推荐
- kafka入门之broker--日志存储设计
kafaka并不是直接将原省消息写入日志文件的,相反,它会将消息和一些必要的元数据信息大宝在一起封装成一个record写入日志.其实就是我们之前介绍的batch 具体对每个日志而言,kafka又将其进 ...
- mfc 笔记
在类成员初始化时,使用另一个成员变量,必须满足,在.h声明时在另一个变量之后,初始 .hprivate: //K线图位置 CPoint m_KPoint; //十字光标位置 CPoint m_trac ...
- 04_ Broadcast Receiver
Broadcast是广播,和Android内的事件一样,它可以发出一个广播(事件),注册了该广播接收器(事件监听器)的所有组件都会接收到该广播,从而调用自己的响应方法(事件响应处理). 下面将详细的阐 ...
- python虚拟环境相关设置备忘
sudo pip install virtualenv #安装虚拟环境 sudo pip install virtualenvwrapper #安装虚拟环境管理工具nano ~/.bashrc #修 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的layoutDirection属性
layoutDirection属性保存的是部件的布局方向,有三个取值: 在部件上设置布局方向时,它将传播到部件的子级,但不会传播到作为窗口的子级,也不会传播到已显式调用setLayoutDirecti ...
- PyQt学习随笔:重写组件的event方法捕获组件的事件
在PyQt的组件对象中,都有从QWidget中继承的方法event,而QWidget.event是对QObject类定义的虚拟方法event的实现. event方法的语法: bool event(QE ...
- Djang项目部署之sqlite版本升级
项目环境: centos7 django 2.2.10 问题描述: 使用了django 2.2.12版本开发项目,此版本对应的sqlite需要升级为3.8.0以上. 百度了不少解决方案,缺点:过程繁琐 ...
- 搭建xss-platform平台
一直想搭在公网搭建自己的XSS平台用来验证XSS漏洞,使用别人的平台自己心里总会有担心被摘果子的顾虑,前几天参考了不少前人的博客,终于搭建好了,搭建的途中也遇到了不少坑,故把搭建的经验分享出来,大佬轻 ...
- jsonp使用post方法
来源https://www.jb51.net/article/68980.htm
- 【题解】P3631 [APIO2011]方格染色
很有意思的一道题,所以单独拿出来了. 完整分享看 这里 题目链接 luogu 题意 有一个包含 \(n \times m\) 个方格的表格.要将其中的每个方格都染成红色或蓝色.表格中每个 \(2 \t ...