【发布时间】:2022-11-15 02:46:03
【问题描述】:
当其中一些值为 NULL 时,我正在尝试查询并正确格式化由 Oracle 中的多个值组成的地址。 Coalesce() 对此效果很好,但在我添加空格/标点符号时效果不佳。
例子
address 1: 123 Main St
address 2: Apt 1
City: New York
State: NY
Postal Code: 10001
Country: USA
address 1: NULL
address 2: NULL
City: New York
State: NULL
Postal Code: 10001
Country: USA
提取完整地址时,如果值为 NULL,我想忽略后续标点符号,这样就没有多余的逗号/空格。
select a.address1 || ' ' || a.address2 || ', ' || a.city || ', ' || a.state || ' ' || a.postal_code || ', ' || 'USA',
Coalesce(a.address1, a.address2, a.city, a.state, a.postal_code,'USA')
from address a
- 示例 1 结果:123 Main St Apt 1, New York, NY 10001, USA
- 示例 2 结果: , New York, 10001, USA
示例 2 的预期结果:纽约,10001,美国
这只是一个示例,但是当缺少任何元素组合时,我想要一条格式仍然正确的行。
【问题讨论】:
-
只需将您构建的地址提供给 regexp_replace,如下所示:
Regexp_replace(youradress, '^[ ,]+|, ?(?>,)|[ ,]+$')。这对您构建的内容进行后处理,以查找和删除所有看起来很有趣的标点符号。这有点微妙,在中间部分使用前瞻来删除多个逗号,但至少保留一个。