如何在ORACLE SQL where子句中的多列中搜索多个字符串

时间:2017-07-07 19:05:39

标签: sql oracle

我的情况 - 我必须有两个表,每个表有几列,我需要在这两个表的某些列中找到某些字符串。例如,搜索字符串可以是' ExampleString1' ,' ExampleString2%'大约20个字符串,每个表大约5-6列。

我使用以下内容在多列中找到至少一个字符串,但这甚至不起作用。

select * from table1 a where upper('ExampleString1%') in (a.Column1, a.column2, a.column3) 

虽然我可以做一些基本的SQL查询,但我不熟悉sql。我想知道解决方案或我可以研究的任何材料以获得解决方案。

由于 RK

2 个答案:

答案 0 :(得分:3)

您可以组合所有必填字段并对其进行检查:

select * 
from table1 a
where NVL(upper(a.Column1),'')||NVL(upper(a.column2),'')||NVL(upper(a.column3),'') like upper('ExampleString1%')

答案 1 :(得分:0)

这里可以通过使用 REGEXP_LIKE 来避免使用 upper()

SELECT * FROM TABLE A WHERE 
REGEXP_LIKE(COLUMN1 || COLUMN2 || COLUMN3, '<search expression>', 'i')