字符串替换连接的 SQL SELECT 语句

String Replace a joined SQL SELECT statement

我想知道是否可以在联接的 SQL 语句上完成字符串替换。比如我的查询是:

SELECT (SITE_NAME || ', ' || LOT_NUMBER || ' ' || UNIT_TYPE || ' ' || LEVEL_NUMBER 
|| ' ' || UNIT_NUMBER || ' ' || ROAD_NUMBER_1 || ' ' || ROAD_NUMBER_2 || ' ' || ROAD_NAME 
|| ' ' || ROAD_TYPE || ' ' || ROAD_SUFFIX || ', ' || SUBURB || ', ' || STATE) AS address
FROM ADDRESS_LOOKUP_TOOL
WHERE ADD_ID = :P1_ADD_ID;

这个语句完美地工作....假设每个地址字段都被填充。如果只填充了部分路段(即没有站点名称或道路后缀),则会有额外的逗号或空格。

这里有一个很好的例子select:

House of Dom, Lot 1 Suite 4 4D 119 Fake St South, Domtopia, QLD

这是一个有缺陷的例子 select:

, Lot 1 Suite 4 4D 119 Fake St , Domtopia, QLD

是否可以在我可以说的别名上进行字符串替换,例如 replace(address, ' ,', ',')(其中 "space comma" 变为 "comma"),或者有更好的方法我应该构建我的 select 来一次性完成这个吗?

附加说明:如果这有所不同,这一切都将在 Oracle 的 Application Express (ApEx) 中完成。

我是 SQL 的新手,所以如果我问任何基本的跟进问题,我提前道歉!

谢谢!

多米尼克

您不需要对别名执行此操作。只需在表达式本身上执行即可。

SELECT REPLACE(
    (SITE_NAME || ', ' || LOT_NUMBER || ' ' || UNIT_TYPE || ' ' || LEVEL_NUMBER 
|| ' ' || UNIT_NUMBER || ' ' || ROAD_NUMBER_1 || ' ' || ROAD_NUMBER_2 || ' ' || ROAD_NAME 
|| ' ' || ROAD_TYPE || ' ' || ROAD_SUFFIX || ', ' || SUBURB || ', ' || STATE), 
    ' ,', ',') AS address
FROM ADDRESS_LOOKUP_TOOL
WHERE ADD_ID = :P1_ADD_ID;