0

提前感谢您通过此博客提供帮助。我正在处理 Teradata SQL 需求,在这里需要帮助。以下是详细信息。

1. S_SRV_REQ_X has a column ATTRIB_47 which has different values like below.
Record 1: ,233650289942,803632139926
Rec 2: ,307503494667,,657001028536
Rec 3: 010000768233,010000768241,
Rec 4: 010000768233,010000768241,
Rec 5:,,,517971957017,
Rec 6: ,,002512117934,301040153878,,573977796362
Rec 7: ,002402799494,,,,,,,
and so on..

以上是访问卡号,我必须在不同的表列 S_ASSET 表中查看,列:SERIAL_NUM(每行只有一条记录)并在 S_ASSET 表中查找该序列号的状态并填充 SR_NUM 以表示断开连接仅限卡。

有什么方法可以只对访问卡号进行模式匹配并为 DISC 卡填充 SR_NUM?

门禁卡号码始终为 12 位数字,并且以逗号分隔。但逗号可以在记录中的任何位置。ATTRIB_47 列的最大长度为 255,因此任何记录最多可以有 15 张以上的卡片。

我应该在 where 子句中有这个条件。有人可以对此提出一些想法吗?

条件:

AND SSRY.CST_OU_ID = s_asset.owner_accnt_id;
AND S_ASSET = S_SRV_REQ_X.ATTRIB_47(do pattern match here to look for each access card numbers in the table).

请帮忙。

4

1 回答 1

0

如果有使用相等的附加条件,您可以简单地使用 LIKE:SSRY.CST_OU_ID = s_asset.owner_accnt_id AND S_SRV_REQ_X.ATTRIB_47 like '%' || 资产 || '%'

但如果这是唯一的连接条件,您将获得产品连接,这将消耗大型表的大量 CPU。在这种情况下,最好在加入之前将值拆分为行,这取决于您的 Teradata 版本,这可能或多或少容易。

顺便说一句,您可能知道,重复组违反了第一范式,因此确实是不好的做法。

迪特

于 2013-07-15T18:15:30.450 回答