用charindex的话只能找出连续的字符.比如:
select charindex(','+'1,2'+',',','+'1,2,3,4,5,6'+',')
如果我想找出字符串1,2,3,4,5,6中的1,5,代码如下
select charindex(','+'1,5'+',',','+'1,2,3,4,5,6'+',')
这样就找不出来了.像这种情况如何处理?用什么函数?谢谢!要达到的目的就是在字符串中1,2,3,4,5,6中字符1,5都是"存在"的.
select charindex(','+'1,2'+',',','+'1,2,3,4,5,6'+',')
如果我想找出字符串1,2,3,4,5,6中的1,5,代码如下
select charindex(','+'1,5'+',',','+'1,2,3,4,5,6'+',')
这样就找不出来了.像这种情况如何处理?用什么函数?谢谢!要达到的目的就是在字符串中1,2,3,4,5,6中字符1,5都是"存在"的.
解决方案 »
- 三表关联left join 如何去掉重复值
- 触发器问题---------------------------------------只有这些分了-----
- 三个表的问题!!!!谢谢指点>>>>>>>>(我感觉有些难度)
- 不知道这个SQL应该怎么写呢...路过的SQL高手进来看看吧
- 再次向大家求助!怎么在一个SQL语句中实现“日累”、“月累”!
- 求SQL语句一条。解决马上送分。
- SQL 恢复异常 用备份的文件恢复 提示 恢复失败!请确认没有人正在使用所选帐套.
- EXCEL横打的命令
- 跨数据库事务提交问题!!
- 请各位大虾帮忙!!
- 同一台机器装上sql 2000和sql 2008后的默认连接
- ADO连sql server ,连不上
http://bbs.csdn.net/topics/70309524--处理函数
CREATE FUNCTION f_comp
(
@str1 VARCHAR(8000) ,
@str2 VARCHAR(8000)
)
RETURNS INT
AS
BEGIN
DECLARE @i INT
SELECT @i = 0 ,
@str1 = ',' + @str1 + ','
WHILE CHARINDEX(',', @str2) > 0
SELECT @i = @i
+ CASE WHEN CHARINDEX(',' + LEFT(@str2,
CHARINDEX(',', @str2) - 1)
+ ',', @str1) > 0 THEN 1
ELSE 0
END ,
@str2 = STUFF(@str2, 1, CHARINDEX(',', @str2), '')
SET @i = @i + CASE WHEN CHARINDEX(',' + @str2 + ',', @str1) > 0 THEN 1
ELSE 0
END
RETURN(@i)
END
go
--调用
SELECT dbo.f_comp('1,2,3,4,5', '1,3,4,6')
go
DROP FUNCTION f_comp
这个不行吧.
如果是SELECT dbo.f_comp('1,2,3,4,5', '1,6')
得出的还是个大于0的.
现在结果需要的是"1,6" 是不存在"1,2,3,4,5"中的.
select number from master..spt_values where type='p' and charindex(','+convert(varchar,number)+',',','+'1,5'+',')>0
)a inner join (
select number from master..spt_values where type='p' and charindex(','+convert(varchar,number)+',',','+'1,2,3,4,5,6'+',')>0
)b on a.number=b.number
/*
number
-----------
1
5(2 行受影响)*/