日期:2014-05-18  浏览次数:20839 次

如何判断一个字段中是否包含某一个字符串
比如,字段A中有字符串“11,12,33,112”,用逗号分隔的,现在我要查其中是否包含了11。如果用like '%11%' 会把112也给查出来,我只要求把11查出来,有什么办法可以解决这个问题呢?

附加一个问题,如果查到有11,我想从中删除11,变成“12,33,112”,又该怎么做呢?求高手解决。。。

------解决方案--------------------
光 sql 语句里判断的话 like '11,%' or like '%,11,%' or like '%,11'。
------解决方案--------------------
SQL code

create table #temp(idnum VARCHAR(6),idname varchar(20))
insert into #temp values('id1','11')
insert into #temp values('id2','12')
insert into #temp values('id3','112')

declare @str VARCHAR(10)
set @str='11,12,33,112'
select * from #temp where CHARINDEX(idname,@str)>0
/*
idnum  idname
------ --------------------
id1    11
id2    12

(2 行受影响)
*/
--删除
DELETE FROM #temp WHERE CHARINDEX(idname,@str)>0

------解决方案--------------------
在程序中使用字符串操作就可以了
1 先使用Split()方法得到每个逗号分隔的字符串,再循环得到的字符数组判断是否有等于11的字符串
2 使用Replace()方法
------解决方案--------------------
把字段A用豆号分隔 string[] a =A.Split(',');

循环遍历数组a, 等于11,就是存在的。

string b="";
for(int i=0;i<a.length;i++)
{
if(a[i]!="11")
{
b+=a[i]; 
}
}
------解决方案--------------------
C# code

string strA = "11,22,112";
Console.WriteLine(strA.Split(',').Contains("11"));
//true
Console.WriteLine(strA.Split(',').Contains("1"));
//false

------解决方案--------------------
Regex.IsMatch(yourstr,@"\b11\b")
Regex.Replace(yourstr,@"\b11\b","")