创建一张表,然后往里面添加三笔数据

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写法(普通、存储过程)相关推荐

  1. (PG数据库函数写法(存储过程))

    ** (PG数据库函数写法(存储过程)) ** 以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例. 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的 ...

  2. [转]SQLServer和Oracle,存储过程区别,常用函数对比

    本文转自:http://www.cnblogs.com/neru/archive/2011/08/18/2144049.html 以前一直用sqlserver,只有很少的一点oracle的经验,现在要 ...

  3. SqlServer和MySQL中存储过程out返回值处理C#代码

    1.SqlServer中out处理 C#代码 #region"SqlServer中存储过程处理out返回值"//public void getdata()//{// string ...

  4. sqlserver找不到存储过程

    在敲组合查询的时候要用到存储过程,而我在敲组合查询的过程中却遇到一个问题: 这就让我很纳闷了,难道是因为我的存储过程的名字写错了?还是存储过程里的sql语句有错误?我仔仔细细检查了一遍,没有错啊.就在 ...

  5. php mysql存储过程写法_mysql存储过程写法

    都说不懂数据库的程序员不是合格的程序员,那么你知道MySQL存储过程应该怎么写吗? MySQL存储过程写法 可以使用 CREATE PROCEDURE 语句创建存储过程. 数据库存储过程语法格式如下: ...

  6. sqlserver 创建对某个存储过程执行情况的跟踪

    有时候需要抓取执行存储过程时某个参数的值,有时候程序调用存储过程执行后结果不太对,不确定是程序的问题还是存储过程的问题,需要单独执行存储过程看结果 即可用下面的方法 --=============== ...

  7. SQLSERVER对加密的存储过程、视图、触发器进行解密

    加密测试的存储过程 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE TYPE='P' AND NAME='P_TEST') DROP PROCEDURE P_TEST ...

  8. SQLServer 2000中,存储过程和用户自定义函数具体的区别??

    2019独角兽企业重金招聘Python工程师标准>>> 存储过程 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语 ...

  9. SQLserver基础--语句、存储过程(七)

    [随堂练习]--查询'李数'老师教的数学成绩大于80分的学生的信息, 并且人数大于3的话,输出达标:否则输出不达标. 存储过程 --带参数的程序代码块---代表执行命令存储在数据库中,存储代码,没有调 ...

  10. sqlserver常用的系统存储过程

    1. 查看数据库的版本 select@@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查 ...

最新文章

  1. 英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器
  2. Android 9.0 系统弹框
  3. win10 nms cpu编译-ok
  4. 简单灵活的 PHP页面跳转函数
  5. Kotlin进行异步操作
  6. wxWidgets:编写应用程序的快速指南
  7. pymssql mysql_Python利用pymssql访问mysql数据库
  8. from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询
  9. cad在布局怎么调比例_CAD中如何在布局空间调整图形比例?
  10. C++多线程编程(3) 异步操作类 std::future std::promise std::async
  11. 美国纽约法院定于明年3月对BitMEX前高管进行审判
  12. Fortinet推出集成化SD-WAN解决方案
  13. 使用VS2012新建空白解决方案
  14. 普元EOS7.5生成入参为数组的WebService接口
  15. html内容转换中文乱码怎么办,HTML中文乱码怎么解决?
  16. Flash的破解版按装
  17. 互联网公益陷入信任危机,智慧公益能否力挽狂澜?
  18. 拉钩网前端项目实战06
  19. 2022 ouc 计算机网络exp1
  20. Android设备用指令查看设备mac地址的两种方法

热门文章

  1. 健康大数据管理与服务类毕业论文文献都有哪些?
  2. 获取并显示服务器数据,客户端获取服务器数据解析
  3. 如何把二维数组传参给函数
  4. autoCAD数据库读写
  5. 从一名白纸交易者到稳定盈利交易员需要多长时间?
  6. textarea中的内容保存与显示时换行符的处理方法
  7. class与typename的异同
  8. LNK2001LNK2019
  9. 图解快速排序——通俗易懂(quick sort)
  10. python怎么打印奇数菱形_python怎么打印菱形