使用oracle pl / sql

时间:2018-04-03 14:52:21

标签: oracle plsql

使用oracle pl / sql从地址中删除重复的单词:

有两种类型的地址,下面是示例,

1。 '3 Mayers Court 3 Mayers Court':地址中的单词总数均为偶数,且所有单词/单词组合均为重复。

2。 '庄园庄园'或'1 Briar Cottages 1 Briar':地址中的单词总数是奇数,因此有一个中间单词,左边和右边的所有单词/单词组合都是重复的。

我可以通过代码完成此操作,但我不知道如何通过PL / SQL删除重复的单词。我已被指示通过PL / SQL匿名块或通过函数执行此操作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

如果这些是您的数据中可能出现的唯一情况,您可以使用下面的查询。您可以将此逻辑转换为函数,但查询更快,更简单。

这里没什么好看的,我只是将字符串分成两半并与源码进行比较。适用于给定的示例,显然可能存在需要更多逻辑的情况。例如,如果你在字符串中有连续的空格,你必须首先摆脱它们。

<强> demo

var n1 = Number()         // n1 === 0 is true
var n2 = Number("")       // n2 === 0 is true
var n3 = Number(null)     // n3 === 0 is true 

结果:

select address, 
       case when address like sub||'%' 
            then substr(address, 1, length(address) - length(sub)) 
            else address
       end trimmed
  from (select address, trim(substr(address, instr(address, ' ', 1, sn/2 + 1))) sub 
          from (select address, regexp_count(address, ' ') sn from t))