使用oracle pl / sql从地址中删除重复的单词:
有两种类型的地址,下面是示例,
1。 '3 Mayers Court 3 Mayers Court':地址中的单词总数均为偶数,且所有单词/单词组合均为重复。
2。 '庄园庄园'或'1 Briar Cottages 1 Briar':地址中的单词总数是奇数,因此有一个中间单词,左边和右边的所有单词/单词组合都是重复的。
我可以通过代码完成此操作,但我不知道如何通过PL / SQL删除重复的单词。我已被指示通过PL / SQL匿名块或通过函数执行此操作。任何帮助将不胜感激。
答案 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))