62,268
社区成员
发帖
与我相关
我的任务
分享
id name scorelist
1 张三 76,78,81
2 赵四 87,76,8
3 王五 71,18,20
4 小强 54,8,88
select * from [user] where charindex(',8,',','+scorelist+',')>0
--先创建一个函数
create function fun_split
(
@scorelist varchar(2000),--scorelist
@split varchar(2) --分割符
)
returns varchar(100) --返回符合条件的scorelist
as
begin
declare
@checked varchar(100),
@result varchar(100),
@flag char(1)
set @result = @scorelist
while(charindex(@split,@scorelist)<>0) --以","分割查找索引
begin
set @checked = substring(@scorelist,1,charindex(@split,@scorelist)-1) --获取第一个","前的分数
if(ltrim(rtrim(@checked)) = '8') --81,76
begin
set @flag = 'Y'
break
end
set @scorelist=stuff(@scorelist,1,charindex(@split,@scorelist),'') -- 索引剩下的
if (ltrim(rtrim(@scorelist)) = '8')
begin
set @flag = 'Y'
break
end
end
if (@flag = 'Y')
begin
set @result = @result
end
else
begin
set @result = ''
end
return @result
end
go
--这里是调用,觉得符合你的要求
select * from [USER] where scorelist in(dbo.fun_split(scorelist,','))