Sql 删除拖曳管道分隔符和介于两者之间的管道
我正在将三个电话号码(由管道分隔符分隔)加载到Teradata DWH中的一列中Sql 删除拖曳管道分隔符和介于两者之间的管道,sql,teradata,Sql,Teradata,我正在将三个电话号码(由管道分隔符分隔)加载到Teradata DWH中的一列中 如果三个电话号码同时存在,则该值应为 像这个123 | 456 | 789 如果第一个和第三个存在,则123 | 789 如果出现第一个和第二个,则不超过123 | 456 如果存在第二个和第三个,则为456 | 789 编写的查询存在一些问题,如果有任何电话号码丢失,比如说如果第二个电话号码丢失,它将存储如下值123 | | 789,或者如果第三个电话号码丢失,它将给出123 | 456 | 我们不希望在两个管道
123 | | 789
,或者如果第三个电话号码丢失,它将给出123 | 456 |
我们不希望在两个管道之间有尾管或两个管道。请建议使用Teradata查询来实现此功能。逻辑是:
为每列指定不同的权重,然后计算所有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
分享您迄今为止实施的查询,以便对您的错误之处或可以改进的地方提出建议。什么是“缺失”?无效的空字符串?Sudarshan,我们可以看到你自己的查询尝试吗?我们鼓励发帖人在发帖前认真尝试一下自己的问题。为什么问题和答案都被否决了?看起来这是一个合理的问题,逻辑上有什么问题吗?如果人们没有说明为什么他们投了反对票,我们只能猜测。我的猜测是,这个问题是零努力的,而且看起来它应该被否决。你的回答要求投票,所以这可能是你得分的原因-我们不鼓励在这里要求投票。