sql查询以逗号分隔的字段

2025-03-23 14:38:34
推荐回答(5个)
回答1:

通过测试没有问题,应该是你的拼接语法错了
create table #a
(
aa varchar(50)
)
insert #a values('2,3,9,12,10,')
insert #a values('5,15,13,3,2,')
select * from #a where aa like '%2%'
drop table #a

看了上面的回答,原来要排除12这种可能性啊,也很简单,随手写的测试语句可以参考下
create table #a
(
aa varchar(50)
)
insert #a values('2,3,9,12,10,')
insert #a values('5,15,13,3,2,')
insert #a values('5,35,3,3,12,')
select * from #a where ','+aa like '%,2,%'
drop table #a

回答2:

先建一个函数,将字符串切割成一个个单独的数字

--自定义函数.Split
Create FUNCTION [dbo].[Split]
(
@Expression varchar(8000)
, @Delimiter varchar(10)
)
RETURNS @Values table(Value varchar(2000))
AS
BEGIN
declare @i int, @dl int, @l int, @value varchar(2000)
select @i = charindex(@Delimiter, @Expression), @dl = len(@Delimiter), @l = len(@Expression)

while (@i > 0)
begin
select @value = ltrim(rtrim(left(@Expression, @i - 1))), @Expression = substring(@Expression, @i + 1, @l)
insert into @Values (value) values(@value)
select @i = charindex(@Delimiter, @Expression), @l = len(@Expression)
end

set @Value = rtrim(ltrim(@Expression))
if @Value <> '' insert into @Values (Value) values(@Value)

return
END

再查出你要的数据
select * from dbo.Split('2,3,9,12,10,',')
where Value like '%2%'

回答3:

select * from table where AA like '%,2,%' or substring(AA, 1, 2)="2," or substring(AA, len(AA)-1,2)=',2'

回答4:

select * from table where AA like '%,2,%' or AA like '2,%' or AA like '%,2'

回答5:

select * from table where AA like '%2%'
这样不可以么?
为啥感觉你的语句格式很奇怪。。