Oracle 中所有列的全文搜索

Full text search in all columns in Oracle

我在 PostgreSQL 中使用了以下查询,我调查了 Oracle 19c 是否有类似的查询:

SELECT * FROM table_name 
WHERE table_name::TEXT LIKE '%some_text%';

我能找到的 Oracle 最佳替代方案如下,但我想知道是否有更好的方法。

SELECT * FROM table_name
WHERE
   COALESCE(to_char(column1), '') || 
   COALESCE(to_char(column2), '') || 
   COALESCE(to_char(columnN), '') 
LIKE '%some_text%';

如果一半文本在一列中而另一半文本在下一列中,您的查询将给出误报。您可以使用 OR 并对每一列进行过滤:

SELECT *
FROM   table_name
WHERE  column1 LIKE '%some_text%'
OR     column2 LIKE '%some_text%'
-- ...
OR     columnN LIKE '%some_text%';

注意:您也可以跳过筛选 non-string 列。