有张表tmp1
id route
1 1路
2 2路
3 11路
4 106路
5 郊区1路
6 夜间1路
我输入“1”,要只得到
1 1路
5 郊区1路
6 夜间1路
这个语句怎么写呢? select * from tmp1 where route like ……,
id route
1 1路
2 2路
3 11路
4 106路
5 郊区1路
6 夜间1路
我输入“1”,要只得到
1 1路
5 郊区1路
6 夜间1路
这个语句怎么写呢? select * from tmp1 where route like ……,
id route
1 1路
2 2路
3 11路
4 106路
5 郊区1路
6 夜间1路
7 61路
8 91路
9 鼓扬线
10 东奥线
11 地铁1号线用户输入“1”,可以得到的结果是
1 1路
5 郊区1路
6 夜间1路
11 地铁1号线
declare @t table (id int,route varchar(10))
insert into @t
select 1, '1路' union
select 2, '2路' union
select 3, '11路' union
select 4, '106路' union
select 5, '郊区1路' union
select 6, '夜间1路'
declare @p varchar(10)set @p='1'
select id,route
from @t
where (isnumeric(@p)=1 and ','+route like '%[^0-9]'+@p+'[^0-9]%')
or (isnumeric(@p)=0 and charindex(@p,route)>0)/*
id route
----------- ----------
1 1路
5 郊区1路
6 夜间1路(所影响的行数为 3 行)
*/set @p='区'
select id,route
from @t
where (isnumeric(@p)=1 and ','+route like '%[^0-9]'+@p+'[^0-9]%')
or (isnumeric(@p)=0 and charindex(@p,route)>0)/*
id route
----------- ----------
5 郊区1路(所影响的行数为 1 行)
*/
select *
from tmp1
where (isnumeric(@p)=1 and ','+route like '%[^0-9]'+@p+'[^0-9]%')
or (isnumeric(@p)=0 and ','+route like '%[^0-9]'+@p+'%')
再修改一下:
set @p='1路'
select id,route
from @t
where ','+route+',' like '%[^0-9]'+@p+'[^0-9]%'/*
id route
----------- ----------
1 1路
5 郊区1路
6 夜间1路(所影响的行数为 3 行)*/
insert into @t
select 1, '1路' union
select 2, '2路' union
select 3, '11路' union
select 4, '106路' union
select 5, '郊区1路' union
select 6, '夜间1路' union
select 7, '1'
declare @s varchar(10)
set @s='1'
select * from @t where ' ' + route + ' ' like '%[^0-9]' + @s + '[^0-9]%'
declare @t table (id int,route varchar(10))
insert into @t
select 1, '1路' union
select 2, '2路' union
select 3, '11路' union
select 4, '106路' union
select 5, '郊区1路' union
select 6, '夜间1路' union
select 7, '1'
declare @s varchar(10)
set @s='1'
select * from @t where patindex('%[^0-9]' + @s + '[^0-9]%',' ' + route + ' ')>0