一、用sql函数

首先要创建一个截取字符串的函数,新建一个查询,把下面代码复制进去执行。

函数SqlitIn的第一个参数是储存过程要in的字符串,第二个参数是分隔符

  CREATE  function  SplitIn(@c varchar(200),@split varchar(2))
returns @t table(col varchar(20))
as
begin
while(charindex(@split,@c)<>0)
begin
insert @t(col)values (substring(@c,1,charindex(@split,@c)-1))
set @c=stuff(@c,1,charindex(@split,@c),'')
end
insert @t(col)values(@c)
return
end

  

此时在数据库里  可以找到这样的一个函数

这个函数的作法:

select col from SplitIn('00001,00002,00003',',')   得到的结果是

即把传入的字符串'00001,00002,00003' 根据逗号分割,变成一个只有一列的表

最后储存过程调用这个函数

declare @id nvarchar(200)

set @id='00001,00002,00003'

select * from A where id in(select col from SplitIn(@id,',')) 就ok 了

上面这句相当于select * from A where id in('00001','00002','00003')

二、用Exec

declare @itemid varchar(100)
set @itemid='''KDFCX030VL1'',''KDSCX000QX'''
exec('select * from yong_ue127diatable with(nolock) where itemid in('+@itemid+')')

这样@两侧的''就会被+号作用掉

三、用CharIndex

declare @itemid varchar(100)
set @itemid='KDFCX030VL1,KDSCX000QX'
select * from yong_ue127diatable with(nolock) where charindex(','+ltrim(itemid)+',',','+@itemid+',')>0

sql储存过程in(多个参数)的更多相关文章

  1. C#函数与SQL储存过程

    一点点小认识作为memo,求指正. C#的函数与SQL的储存过程有很多的相似性, 它们都是一段封闭的代码块,来提高代码的重用性,虽然现在复制粘贴很方便,但是我们在写多个函数的时候频繁的复制粘贴相同的内 ...

  2. sql 储存过程的使用

    --获取所有数据 根据自定义函数传人类型id返回类型名称 USE [Cloths] GO /****** Object: StoredProcedure [dbo].[Proc_all] Script ...

  3. SQL储存过程

    基本语法 创建存储过程 create procedure sp_name @[参数名] [类型],@[参数名] [类型] as begin ......... end 以上格式还可以简写成: crea ...

  4. 关于SQL储存过程中输出多行数据

    declare @num1 int           --为符合条件的总行数 select @num1=COUNT(1) from cardInfo where openDate between @ ...

  5. SQL获取所有数据库名、表名、储存过程以及参数列表

    SQL获取所有数据库名.表名.储存过程以及参数列表 1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogi ...

  6. SQL Server 储存过程的output 参数

    要做的参数的回传一方面要做到有储存过程的配合,再一方面也要有调用方法的配合,也就是说错误的调用方法是没有办法把值回传的. 下面是例子 --1.储存过程方面的配合 create procedure db ...

  7. SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数

    -- SQL SERVER 判断是否存在某个触发器.储存过程 -- 判断储存过程,如果存在则删除IF (EXISTS(SELECT * FROM sysobjects WHERE name='proc ...

  8. Sql语句导出数据库表结构及查询表视图储存过程名

    --一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

  9. C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

      C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度.不然获取到的结果总是只有第一字符.本人就是由于这个原因,折腾了很久.在此记录一下,供大家以后参考! 例如: ...

随机推荐

  1. 云卡门禁安卓SDK_BLEDOOR_SDK_ANDROID_2016_12_15

    package com.bosk.bledoor.sdk; //sdk包的开门服务类,AndroidManifest.xml 必须注册 //<service //android:name=&qu ...

  2. 洗礼灵魂,修炼python(30)--装饰器(2)—>装饰器总结+进阶使用

    在上一篇博文的经典案例中,我想你应该对装饰器有很好的了解了,不过光有那些还不够真的,还需要总结和进阶一下,所以本篇博文解析装饰器进阶. 装饰器 1.什么是装饰器? 个人理解:装饰器又叫语法糖,指的是对 ...

  3. linux查找某段时间修改的文件的总大小

    1.统计 2017-10-25 16:30:00 至 2017-10-25 19:30:00 修改的文件的总大小 b= for i in `find -type f \( -newermt '2017 ...

  4. java 基础one ---运算符and流程控制

    首先java这个了解下java的基础 首先java文件都是以.java结尾的  然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...

  5. Vim命令图解及快捷键讲解

    快捷键详解

  6. Gogs基本使用介绍

    Gogs简介 Gogs 是一款类似GitHub的开源文件/代码管理系统(基于Git),Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs ...

  7. 使用Jenkins+gitlab自动化构建时排除分支

    我们的目的是gitlab上的代码有变动时会自动向Jenkins发送web钩子请求,触发指定的动作: 但默认情况下,所有分支(如测试环境和预生产)的代码有变动时都会触发,此时可以在Jenkins的项目设 ...

  8. UITableView详解

    一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(, , , )]; [DataTable setD ...

  9. C# Repeater、webdiyer:AspNetPager分页 AspNetPager分页样式

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/vaecnfeilong/article/details/32712611 AspNetPager分页 ...

  10. centos7下安装docker(12.1bridge网络)

    容器默认使用的时bridge网络 docker安装时会创建一个 命令为docker0的linux bridge.如果不指定--network=,运行的容器会默认挂到docker0上 interface ...