0

因此,这与SQL LIKE Column Value Plus Wildcard DB2相关,但是操作系统的一个更具体的问题 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

一种选择是使用范围谓词并将高值连接到范围高端的列值的末尾。这等价于 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 回答