String替换已连接的SQL SELECT语句

时间:2016-06-17 13:23:46

标签: sql string select replace oracle-apex

我想知道是否可能在连接的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;

此语句完美运行....提供每个单一地址字段。如果仅填充了某些部分(即没有站点名称或道路后缀),则还有其他逗号或空格。

这是一个很好的选择的例子:

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

这是一个有缺陷的选择的例子:

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

是否可以在我可以说的别名上进行字符串替换,例如replace(address, ' ,', ',')(其中“空格逗号”只是变成“逗号”),或者有更好的方法我应该构建我的选择一次性选择这个?

另外需要注意的是:如果这有所不同,可以在Oracle的Application Express(ApEx)中完成。

我对SQL很新,所以如果我提出任何基本的后续问题,我会提前道歉!

谢谢!

1 个答案:

答案 0 :(得分:0)

您不需要在别名上执行此操作。只是在表达本身上做。

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;