在所有varchar2列中搜索字符串

时间:2013-10-10 05:30:55

标签: sql oracle oracle10g

我有一个包含numbervarchar2数据类型列的表。

myTable的

project_id - number
project_ldr - number 
project_text1 - varchar2
project_text2 - varchar2
project_text3 - varchar2
project_text4 - varchar2
project_text5 - varchar2
project_text6 - varchar2
project_text7 - varchar2

我想在所有varchar2列中搜索一个字符串,并从表中获取行。

目前我有以下sql用于获取行,如果它匹配字符串impl

select * from myTable where lower(project_text1) like lower('%impl%') or 
lower(project_text2) like lower('%impl%')... (all other varchar2 columns)

我希望有更好的方法来实现结果。

任何帮助都非常值得赞赏。

2 个答案:

答案 0 :(得分:1)

我总是喜欢在这种情况下实施全文搜索(FTS)。 谷歌搜索全文。 使用FTS可以获得比当前实现更快的结果

答案 1 :(得分:0)

这很简单:

SELECT *
  FROM myTable
 WHERE lower (project_text1 || project_text2 || project_text3 ||
              project_text4 || project_text5 || project_text6 ||
              project_text7) LIKE lower('%impl%');