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,%' ?
T2
Id text
1 a
2 b
3 c
4 d
5 e
我想让T1表的name字段like T2.Id 怎么写?like '%,T2.Id,%' ?
#10
用这个可以满足上面的要求,谢了,
#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,%' ?
T2
Id text
1 a
2 b
3 c
4 d
5 e
我想让T1表的name字段like T2.Id 怎么写?like '%,T2.Id,%' ?
#10
用这个可以满足上面的要求,谢了,
#11
这也叫难度。。。我。。。