日期:2014-05-19  浏览次数:20656 次

100分求一sql语句
一个表a,里面的记录
id         nameid
1             4
2             4/5/6
3             14
4             104
其中nameid的内容是表b的id的组合,现在我想找nameid包含4的记录找出来,也就是要将     4     和   4/5/6     这两条记录找出来,怎么组织sql语句


------解决方案--------------------

select * from A
where charindex( '4 ', nameid)> 0
------解决方案--------------------
select *
from A
where charindex( '/4/ ', "/ " + nameid + "/ ")> 0

------解决方案--------------------
create table A(id int, nameid varchar(20))
insert A select 1, '4 '
union all select 2, '4/5/6 '
union all select 3, '14 '
union all select 4, '104 '


declare @nameid varchar(20)
set @nameid= '4 '
select * from A
where charindex( '/ '+@nameid+ '/ ', '/ '+nameid+ '/ ')> 0

--result
id nameid
----------- --------------------
1 4
2 4/5/6

(2 row(s) affected)

------解决方案--------------------
Create Table A(ID Int, nameid Varchar(20))
Insert A Select 1, '4 '
Union All Select 2, '4/5/6 '
Union All Select 3, '14 '
Union All Select 4, '104 '
GO
--方法一:
Select * From A
Where CharIndex( '/4/ ', '/ ' + nameid + '/ ') > 0
--方法二:
Select * From A
Where '/ ' + nameid + '/ ' Like '%/4/% '
Go
Drop Table A
--Result
/*
ID nameid
1 4
2 4/5/6
*/
------解决方案--------------------
--如果輸入的參數來查詢

Create Table A(ID Int, nameid Varchar(20))
Insert A Select 1, '4 '
Union All Select 2, '4/5/6 '
Union All Select 3, '14 '
Union All Select 4, '104 '
GO
Declare @nameid Int
Select @nameid = 4
--方法一:
Select * From A
Where CharIndex( '/ ' + Rtrim(@nameid) + '/ ', '/ ' + nameid + '/ ') > 0
--方法二:
Select * From A
Where '/ ' + nameid + '/ ' Like '%/ ' + Rtrim(@nameid) + '/% '
Go
Drop Table A
--Result
/*
ID nameid
1 4
2 4/5/6
*/
------解决方案--------------------
select * from A
where charindex( '/A/ ', '/ '+nameid+ '/ ')> 0

--or:

select * from A
where '/ '+nameid+ '/ ' like '%/4/% '
------解决方案--------------------
select * from a where '/ '+nameid+ '/ ' like '%/4/% '