DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o loss stage 1
Posted
技术标签:
【中文标题】DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o loss stage 1【英文标题】:DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o losing 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 行吗? 【参考方案1】:一种选择是使用范围谓词并将高值连接到范围高端的列值的末尾。这等价于 like 谓词:
select a.columnA
b.columnZ
from a
join table b
on b.columnB >= a.columnA
and b.columnB < a.columnA || x'FF'
这是我们经常在我工作的地方经常使用的东西,以便能够在像这样的部分值匹配上使用索引。
【讨论】:
以上是关于DB2 10 for Z/OS, SQL LIKE Column Value Plus Wildcard DB2 w/o loss stage 1的主要内容,如果未能解决你的问题,请参考以下文章
在 DB2 sql for z/os 中用 0 填充 smallint
我想使用 SQL for DB2 z/OS v9 计算模式中所有表中的记录
如何在 DB2 for Z/OS 中返回系统日期或日期时间?