0

したがって、これはSQL LIKE Column Value Plus Wildcard DB2に関連していますが、OS のより具体的な質問 b/c

だから、私はしたい:

select a.columnA
       b.columnZ
from a
join table b
  on b.columnB LIKE a.columnA || '%'

b.columnB はインデックスであり、それを使用して結合を実行したいと思います (b/c は大規模なテーブルです)。しかし残念なことに、z/OS では、LIKE の右側に列を使用することは許可されていません。

他の投稿から、私は LOCATE を使用できることに気付きましたが、これはスカラー関数であるため、ステージ 1 の述語としての資格がないため、インデックスの値を失います。

4

1 に答える 1

0

1 つのオプションは、範囲述語を使用して、範囲の上限の列値の末尾に高い値を連結することです。これは like 述語と同じです:

select a.columnA
       b.columnZ
from a
join table b
  on b.columnB >= a.columnA 
 and b.columnB <  a.columnA || x'FF'

これは、このような部分的な値の一致でインデックスを使用できるようにするために、私が特に取り組んでいるところでよく使用するものです。

于 2014-06-26T17:39:56.707 に答える