Oracle:LIKE,其中一个字符串的任何部分与另一个字符串的任何部分匹配

时间:2014-08-01 11:39:59

标签: sql oracle

我正在使用PL / SQL v7.1

我正在尝试查找在其中一个地址行字段中输入国家/地区名称的所有地址记录,以及国家/地区字段。 问题是国家细节没有一致输入,例如。

addr4       addr5            country
----------  ----------       ---------------
JERSEY                       UK(JERSEY)
IRELAND                      REPUBLIC OFIRELAND
DOUGLAS      ISLE OF MAN     UK(ISLE OF MAN)  

所以,我需要找到addr4或addr5中也找到Country字段的任何部分的记录。

我从这个

开始
SELECT * 
FROM test_addresses          
WHERE addr4||addr5 LIKE '%'||country||'%'

我知道这不起作用,因为它会以第一条记录为例,检查英国(JERESEY)'在addr4 || addr5中找到,因此,找不到匹配项。但是我如何检查是否'泽西'可以在addr4 || addr5

中找到

2 个答案:

答案 0 :(得分:1)

尝试这种方式:

SELECT * 
FROM test_addresses
WHERE (addr4 is not null and country like '%'||addr4||'%')
or (addr5 is not null  and country like '%'||addr5||'%')

Sql Fiddle Demo

答案 1 :(得分:0)

我对plsql了解不多 但我认为你的查询是倒退的,试试这个。

SELECT * 
FROM test_addresses 
WHERE country LIKE '%'||addr4||'%' 
   or country LIKE '%'||addr5||'%'