sql - Oracle:跨多个列的 "grep"?

标签 sql oracle grep

我想在多个列中执行likeregexp。这些列包含标签、关键字等。等同于:

sqlplus scott/tiger @myquery.sql | grep somestring

现在我有类似的东西

select * from foo where c1 || c2 || c3  like '%somestring%'

但我希望我能得到一些更通用和/或优化的东西。任何线索表示赞赏!

最佳答案

您是否考虑过使用 Oracle Text 的串联数据存储特性?

Oracle Text 允许您在同一个表中的多个列上创建全文索引。或者至少有一个流程可以让您做到这一点。

我以前使用过的 Oracle 站点上有一个很好的示例文档:

http://www.oracle.com/technology/sample_code/products/text/htdocs/concatenated_text_datastore/cdstore_readme.html

Oracle Text 搜索速度快得离谱。我想我会考虑在每个单独的列上保留单独的上下文索引,以便您可以将相关性和优先级应用于每个列匹配。

如果您想要一个示例,请告诉我,我会在答案中添加一些内容。

希望这对您有所帮助。

关于sql - Oracle:跨多个列的 "grep"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161011/

相关文章:

sql - 使用交叉应用子查询优化sql查询时出现问题

sql - 查找覆盖两个日期之间的员工的更有效方法

sql - Oracle 12c子查询分解内联 View 现在有不好的计划吗?

linux - 使用 sed 从日志文件中提取目录

mysql - 如何使用 mySQL 或 Cassandra 查询获取包含相同值的间隔?

sql - 如何阻止我的 Postgres 递归 CTE 无限循环?

sql - SQL Server 2016 sp_execute_external_script 与 R 集成的错误

arrays - oracle pl/sql 数组

linux - Grep 并仅打印匹配的单词和下一个单词

bash - 查找所有包含文本 "example.html"的文件并替换为 "example.php"仅当文件名中没有空格时才有效