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 列。
我在 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 列。