求一个sql语句,查出字段中包含某一个值的记录

时间:2020-12-25 21:56:35

T1
Id   Name
1    1,2,3
2    4,5,6
3    7,8,9,10,11

--用一条sql语句找出name字段包含5的记录,有点难度吧

Id   Name
2    4,5,6


11 个解决方案

#1


select * from t1 where name like '%5%'

#2



select * From t1
where ','+name+',' like '%,5,%'

#3


呃。。。

#4


好吧,真没想到

#5


前后加逗号后可以防止查询出 15,52,等包含5的记录,这个要看你的需求了。

#6


%5%  

#7



DECLARE @T1 TABLE([ID] INT,[NAME] VARCHAR(11))
INSERT @T1
SELECT 1,'1,2,3' UNION ALL
SELECT 2,'4,5,6' UNION ALL
SELECT 3,'7,8,9,10,11'

DECLARE @ID INT SET @ID=5
SELECT * FROM @T1 WHERE CHARINDEX(','+LTRIM(@ID)+',',','+NAME+',')>0
/*
ID          NAME
----------- -----------
2           4,5,6
*/

#8



select * From tab where ','+name+',' like '%,5,%'

#9


这个5要是另外关联的一个表T2的字段呢,假如是

T2
Id text
1   a
2   b
3   c
4   d
5   e

我想让T1表的name字段like T2.Id 怎么写?like '%,T2.Id,%' ?

#10


引用 7 楼  的回复:
SQL code

DECLARE @T1 TABLE([ID] INT,[NAME] VARCHAR(11))
INSERT @T1
SELECT 1,'1,2,3' UNION ALL
SELECT 2,'4,5,6' UNION ALL
SELECT 3,'7,8,9,10,11'

DECLARE @ID INT SET @ID=5
SELECT * FROM @T1 WHERE CH……


用这个可以满足上面的要求,谢了,

#11


这也叫难度。。。我。。。

#1


select * from t1 where name like '%5%'

#2



select * From t1
where ','+name+',' like '%,5,%'

#3


呃。。。

#4


好吧,真没想到

#5


前后加逗号后可以防止查询出 15,52,等包含5的记录,这个要看你的需求了。

#6


%5%  

#7



DECLARE @T1 TABLE([ID] INT,[NAME] VARCHAR(11))
INSERT @T1
SELECT 1,'1,2,3' UNION ALL
SELECT 2,'4,5,6' UNION ALL
SELECT 3,'7,8,9,10,11'

DECLARE @ID INT SET @ID=5
SELECT * FROM @T1 WHERE CHARINDEX(','+LTRIM(@ID)+',',','+NAME+',')>0
/*
ID          NAME
----------- -----------
2           4,5,6
*/

#8



select * From tab where ','+name+',' like '%,5,%'

#9


这个5要是另外关联的一个表T2的字段呢,假如是

T2
Id text
1   a
2   b
3   c
4   d
5   e

我想让T1表的name字段like T2.Id 怎么写?like '%,T2.Id,%' ?

#10


引用 7 楼  的回复:
SQL code

DECLARE @T1 TABLE([ID] INT,[NAME] VARCHAR(11))
INSERT @T1
SELECT 1,'1,2,3' UNION ALL
SELECT 2,'4,5,6' UNION ALL
SELECT 3,'7,8,9,10,11'

DECLARE @ID INT SET @ID=5
SELECT * FROM @T1 WHERE CH……


用这个可以满足上面的要求,谢了,

#11


这也叫难度。。。我。。。