我很难在Sybase中尝试将like
与左连接结合使用。
例如(虽然在我的情况下它有点复杂),但我正在寻找既不包含o
也不包含i
的文字。
我能够做相反的事情,即包含以下任一字母的文字:
select numbers.name from
(
select 'one' name union all
select 'two' name union all
select 'three' name union all -- neither %o% nor %i%
select 'four' name union all
select 'five' name union all
select 'six' name union all
select 'seven' name union all -- neither %o% nor %i%
select 'eight' name union all
select 'nine' name union all
select 'ten' name -- neither %o% nor %i%
) numbers,
(
select '%o%' expression union all
select '%i%' expression
) patterns
where
numbers.name like patterns.expression
按预期选择除three
,seven
和ten
以外的所有记录。
现在,我正在寻找找到这三条记录的方法。我想左边用模式加入数字,然后过滤表达式为null。像这样:
numbers.name *like patterns.expression and
patterns.expression is null
显然,这不起作用。所以,我很高兴任何指针都指向正确的方向。
对于它的价值,这是我正在研究的版本:
select @@version
'Adaptive Server Enterprise/15.0.3/EBF 17156 ESD#3/P/Sun_svr4/OS 5.8/ase1503/2726/64-bit/FBO/Fri Feb 5 05:26:23 2010'
答案 0 :(得分:0)
你应该使用NOT EXISTS
(就是这种情况):
select numbers.name from
(
select 'one' name union all
select 'two' name union all
select 'three' name union all -- neither %o% nor %i%
select 'four' name union all
select 'five' name union all
select 'six' name union all
select 'seven' name union all -- neither %o% nor %i%
select 'eight' name union all
select 'nine' name union all
select 'ten' name -- neither %o% nor %i%
) numbers
where not exists (select null
from (
select '%o%' expression union all
select '%i%' expression
) patterns
where numbers.name like patterns.expression)