是否可以使用Like with ALL关键字

时间:2011-06-10 18:12:39

标签: sql-server tsql stored-procedures

我们说我有以下内容,

declare @A table (a int)

insert into @A
select 1 union all
select 2 union all
select 3

select a FROM @A 
where a > ALL (select 1 union all select 2)

这会奏效。但我需要使用Like而不是大于此处,

declare @A table (a int)

insert into @A
select 1 union all
select 2 union all
select 3

select a FROM @A 
where a LIKE ALL (select 1 union all select 2)

请帮帮我。

修改: 这是我原来的旧表看起来像,

declare @A table (a varchar(500))

insert into @A
select 'a;b;c' union all
select 'a;d;b' union all
select 'c;a;e'

我的应用是在我的SP中发送值为' a; b'或' b; c; a'等

现在我需要只选择表@A中包含a和b或b和c和a的那些行。 我在我的SP中使用split函数将用户输入作为表。 这就是为什么我需要在这里使用Like ALL。但任何其他建议也是受欢迎的。

3 个答案:

答案 0 :(得分:2)

无法使用all。如果我理解正确,你可以使用之类的东西来代替

declare @T table (ID int primary key, Col varchar(25))

insert into @T
select 1, 'a;b;c' union all
select 2, 'a;b;c' union all
select 3, 'a;d;b' union all
select 4, 'bb;a;e'

declare @Input table(val varchar(10))
insert into @Input values('a')
insert into @Input values('b')

select T.ID
from @T as T
  inner join @Input as I
    on ';'+T.Col+';' like '%;'+I.val+';%'
group by T.ID    
having count(t.ID) = (select count(*) from @Input)

结果

ID
1
2
3

答案 1 :(得分:0)

您想要IN吗?

 SELECT a FROM @A WHERE a IN (1,2)

答案 2 :(得分:0)

尝试创建一个具有搜索值的新表,然后使用LIKE语句加入它。

create table searchvalues

(

myvalues varchar(30)

)

INSERT INTO SearchValues    
SELECT '%1%'   
UNION SELECT '%2%'


SELECT * FROM @A    
join searchvalues on a like myvalues