SqlServer-IN写法(普通、存储过程)
创建一张表,然后往里面添加三笔数据
CREATE TABLE Table_GuidTestIn
(
Guid UNIQUEIDENTIFIER PRIMARY KEY,
name NVARCHAR(50)not null
)
insert into Table_GuidTestIn(Guid,name)values(NEWID(),'111')
insert into Table_GuidTestIn(Guid,name)values(NEWID(),'222')
insert into Table_GuidTestIn(Guid,name)values(NEWID(),'333')
select * from Table_GuidTestIn
1.通常写法
SELECT * FROM dbo.Table_GuidTestIn WHERE Guid IN ('FEC2C17B-6C11-49D1-9E6F-7D78230A0548','80AD7D07-18DE-4AB9-8CB8-9A5481AC1CFD','02E74C94-A4C0-40D6-A67E-FE563E767422')
SELECT * FROM Table_GuidTestIn
WHERE CHARINDEX(','+LTRIM(Guid)+',',','+'FEC2C17B-6C11-49D1-9E6F-7D78230A0548,80AD7D07-18DE-4AB9-8CB8-9A5481AC1CFD,02E74C94-A4C0-40D6-A67E-FE563E767422'+',')>0
注意:使用CHARINDEX不能写成以下写法,这样会导致数据丢失
总而言之,CHARINDEX(','+LTRIM(Guid)+',',','+'FEC2C17B-6C11-49D1-9E6F-7D78230A0548,80AD7D07-18DE-4AB9-8CB8-9A5481AC1CFD,02E74C94-A4C0-40D6-A67E-FE563E767422'+',')>0 必须同行,不能折行
2.存储过程的写法
第一种写法
CREATE PROCEDURE TestIn
@strGuid varchar(500) /*strGuid 是guid列表, 类似1,2,3*/
AS
BEGIN
EXEC ('select * from Table_GuidTestIn where guid in('+@strGuid+')')
END
第二种写法
CREATE PROCEDURE [dbo].[TestInCharindex]
@strGuid varchar(500) /*strGuid 是guid列表, 类似1,2,3*/
AS
BEGIN
select * from Table_GuidTestIn where charindex(','+ltrim(guid)+',',','+@strGuid+',')>0
END
执行存储过程 TestIn 、TestInCharindex
EXEC TestIn '''FEC2C17B-6C11-49D1-9E6F-7D78230A0548'',''80AD7D07-18DE-4AB9-8CB8-9A5481AC1CFD'',''02E74C94-A4C0-40D6-A67E-FE563E767422'''
EXEC TestInCharindex 'FEC2C17B-6C11-49D1-9E6F-7D78230A0548,80AD7D07-18DE-4AB9-8CB8-9A5481AC1CFD,02E74C94-A4C0-40D6-A67E-FE563E767422'
注意:Guid比较特殊,所以在存储过程中使用IIN写法需要注意,传入的参数格式必须是
'aa57adce-0c4f-4c73-b3de-f941c7e702d5','cb4cc8bc-2f6d-4cd6-a6df-27146c9dd86e'
也就是说 string Guid=" 'aa57adce-0c4f-4c73-b3de-f941c7e702d5','cb4cc8bc-2f6d-4cd6-a6df-27146c9dd86e' ";
在上文执行存储过程 TestIn特别标注红色,提醒看文的同志们。
在执行 TestIn 如果写成以下去执行则会报错
EXEC TestIn 'FEC2C17B-6C11-49D1-9E6F-7D78230A0548,80AD7D07-18DE-4AB9-8CB8-9A5481AC1CFD,02E74C94-A4C0-40D6-A67E-FE563E767422'
如果是查询 name 这个字段则不会出现这样的错误
CREATE PROCEDURE [dbo].[TestInName]
@strName varchar(500) /*@strName 是name列表, 类似1,2,3*/
AS
BEGIN
EXEC ('select * from Table_GuidTestIn where name in('+@strName+')')
END
执行存储过程
EXEC TestInName '111,222'
备注:函数以及触发器也是同样的原理
SqlServer-IN写法(普通、存储过程)相关推荐
- (PG数据库函数写法(存储过程))
** (PG数据库函数写法(存储过程)) ** 以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例. 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的 ...
- [转]SQLServer和Oracle,存储过程区别,常用函数对比
本文转自:http://www.cnblogs.com/neru/archive/2011/08/18/2144049.html 以前一直用sqlserver,只有很少的一点oracle的经验,现在要 ...
- SqlServer和MySQL中存储过程out返回值处理C#代码
1.SqlServer中out处理 C#代码 #region"SqlServer中存储过程处理out返回值"//public void getdata()//{// string ...
- sqlserver找不到存储过程
在敲组合查询的时候要用到存储过程,而我在敲组合查询的过程中却遇到一个问题: 这就让我很纳闷了,难道是因为我的存储过程的名字写错了?还是存储过程里的sql语句有错误?我仔仔细细检查了一遍,没有错啊.就在 ...
- php mysql存储过程写法_mysql存储过程写法
都说不懂数据库的程序员不是合格的程序员,那么你知道MySQL存储过程应该怎么写吗? MySQL存储过程写法 可以使用 CREATE PROCEDURE 语句创建存储过程. 数据库存储过程语法格式如下: ...
- sqlserver 创建对某个存储过程执行情况的跟踪
有时候需要抓取执行存储过程时某个参数的值,有时候程序调用存储过程执行后结果不太对,不确定是程序的问题还是存储过程的问题,需要单独执行存储过程看结果 即可用下面的方法 --=============== ...
- SQLSERVER对加密的存储过程、视图、触发器进行解密
加密测试的存储过程 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE TYPE='P' AND NAME='P_TEST') DROP PROCEDURE P_TEST ...
- SQLServer 2000中,存储过程和用户自定义函数具体的区别??
2019独角兽企业重金招聘Python工程师标准>>> 存储过程 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语 ...
- SQLserver基础--语句、存储过程(七)
[随堂练习]--查询'李数'老师教的数学成绩大于80分的学生的信息, 并且人数大于3的话,输出达标:否则输出不达标. 存储过程 --带参数的程序代码块---代表执行命令存储在数据库中,存储代码,没有调 ...
- sqlserver常用的系统存储过程
1. 查看数据库的版本 select@@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查 ...
最新文章
- 英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器
- Android 9.0 系统弹框
- win10 nms cpu编译-ok
- 简单灵活的 PHP页面跳转函数
- Kotlin进行异步操作
- wxWidgets:编写应用程序的快速指南
- pymssql mysql_Python利用pymssql访问mysql数据库
- from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询
- cad在布局怎么调比例_CAD中如何在布局空间调整图形比例?
- C++多线程编程(3) 异步操作类 std::future std::promise std::async
- 美国纽约法院定于明年3月对BitMEX前高管进行审判
- Fortinet推出集成化SD-WAN解决方案
- 使用VS2012新建空白解决方案
- 普元EOS7.5生成入参为数组的WebService接口
- html内容转换中文乱码怎么办,HTML中文乱码怎么解决?
- Flash的破解版按装
- 互联网公益陷入信任危机,智慧公益能否力挽狂澜?
- 拉钩网前端项目实战06
- 2022 ouc 计算机网络exp1
- Android设备用指令查看设备mac地址的两种方法