我正在将三个以管道分隔符分隔的电话号码加载到Teradata DWH中的一列。
写入的查询存在一些问题,如果缺少任何电话号码,如果第二个电话号码丢失,则表示存储的值为123 | | 789
,或者如果缺少第三个电话号码,则为给123 | 456 |
。
我们不希望尾随管道或两条管道。请建议Teradata查询来实现此目的。
答案 0 :(得分:-1)
逻辑是:
为每列分配不同的权重,然后评估所有3列的长度的加权和。假设每个电话号码长10位数。这是查询/伪代码。
查询:
Select
case 1*LENGTH(firstCol)+2*LENGTH(secondCol)+4*LENGTH(thirdCol)
when 70 then CONCAT( firstcol,'|', secondcol,'|', thirdCol)
when 60 then CONCAT( secondcol, '|', thirdCol)
when 50 then CONCAT( firstcol, '|', thirdCol)
when 30 then CONCAT (firstcol, '|', secondcol)
when 10 then firstcol
when 20 then secondcol
when 40 then thirdCol
else null
end
from phoneNumbersTable