【问题标题】:DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o losing stage 1DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o loss stage 1
【发布时间】:2013-10-25 19:51:25
【问题描述】:

所以,这与 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 阶段谓词的条件,因此我失去了索引的值。

【问题讨论】:

  • 你的问题是?
  • 您想要 B 中的所有行,其中 columnB 是 columnA 的 SUBSTR(从左侧开始)?如果它将 A 与 AA、AB、ABCDEFG、AZZZZ 等匹配,这是否正确?那么每个 b 行可以有很多 a 行吗?

标签: sql db2 zos


【解决方案1】:

一种选择是使用范围谓词并将高值连接到范围高端的列值的末尾。这等价于 like 谓词:

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

这是我们经常在我工作的地方经常使用的东西,以便能够在像这样的部分值匹配上使用索引。

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多