Sybase SQLのような左結合と組み合わせるにはどうすればよいですか?
-
28-10-2019 - |
質問
私はaを組み合わせようとして立ち往生しています like
とともに 左結合 Sybaseで。
たとえば(私の場合はもう少し複雑ですが)、どちらも含まないテキストを探しています 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
予想通り。
今、私はこれらの3つのレコードを見つける方法を探しています。左の参加について考えました 数字 と パターン 次に、式で式でフィルタリングします。このようなもの:
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'
解決
使用する必要があります 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)
所属していません StackOverflow