sql in 字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql in 字符串相关的知识,希望对你有一定的参考价值。

select count(ProjectID) from WZT_Project where ProjectID in (@ProjectID)
其中@ProjectID是存储过程中的一个参数,是一个字符串类型的
假如@ProjectID 为“abc,cde,efg”。怎么IN @ProjectID里的每一个字符串呀
请高手帮忙
IN 后面的的参数是这样的('abc','cde','efg')
而我的@ProjectID是存储过程的一个参数,传过去后是这样的
'abc,cde.egf'我怎么把'abc,cde.egf'变成'abc','cde','efg'这样的形式呀。直接IN(@ProjectID)的话,是找不到成'abc','cde','efg'这三行的
在存储过程里怎么实现
贰壹肆伍捌
因为要处理好多表,所以得在存储过程里实现,怎么实现呀,我就想知道在存储过程里怎么实现?
还请贰壹肆伍捌赐教

参考技术A 没大懂你的意思..

是不是

Split(',')...??然后可以得到每个子字符串.

然后再 in 每个子字符串.

-------------------

string str="abc,cde,egf";
string[] val=str.Split(',');
string newstr="";
for(int ii=0;ii<val.Length;ii++)
newstr=newstr+"'"+val[ii]+"'"+",";

newstr=newstr.SubString(0,newstr.Length-1);//去掉最后一个逗号

//得newstr值为:'abc','cde','egf'

------------------

不用在存储过程里实现...你在程序里把字符串处理成上面的那样儿.然后再使用存储过程.传的参数是处理后的字符串.
参考技术B 你应该 在in(@var1,@var2,@var3) 加三个参数
然后 直接 把 abc ,cde, efg 分别赋值给 @var1,@var2,@var3

你难道非要让存储过程就有一个参数吗?那样的话你就要用SQL server 对传进参数作处理了! SQL server ,主要是处理数据库的,虽然他也有 控制结构 ,但是处理 你这个问题还是不如一门单纯的高级语言 !所以还是建议你 给存储过程传3个参数

这样做的话, 应该更直观,更容易理解吧
参考技术C 你这样写了自动就in了啊。
例如:
select * from table where username in ('张三','李四','王五')
这句语句就是把username等于张三李四王五的找出来。
如果你上面问的是要传值给存储过程的话,就在代码里写
sqlString="存储过程名 " + "张三,李四,王五" ;
者样就行了
参考技术D replace(@ProjectID,',',''',''')本回答被提问者采纳 第5个回答  2014-12-24 楼主你这问题解决没,采纳的是啥意思

sql SQL INT IN分隔字符串

Charindex(','+cast(so.BuyerID as varchar(10))+',', @buyerIds) > 0)

以上是关于sql in 字符串的主要内容,如果未能解决你的问题,请参考以下文章

Java字符串转Sql语句In格式工具方法

在动态 SQL 的“IN”子句中使用 CSV 字符串值

sql IN 字符串查询 急

如何将字符串数组动态传递给Java中的SQL“IN”子句? [复制]

SQL中in传入字符串处理方法

判断包含字符串,有没有类似sql中的 in的函数