sql - 需要根据单词列表在 Teradata SQL 中搜索文本字段并返回该单词

标签 sql search text full-text-search teradata

我正在一个大型数据库中搜索长度在 5-7 个字符之间的单词列表。 到目前为止,我有:

Select *
  from sometable
 Where upper("Description") like any ("%ABC_123%", "%ABC_124%", "%DE_25%")

我还想返回在查询中找到的单词,但在不重复 subtr 函数中的单词列表的情况下如何做到这一点。

可能有更好的方法可以做到这一点,我会很感激一些方向。

最佳答案

正如 Rob Paller 已经提到的,TD14 中有正则表达式:

Select sometable.*,
       REGEXP_SUBSTR(Description,'((ABC_)(123|124)|(DE_(25)))') AS match
  from sometable
 Where match <> '';

这应该比数百个 LIKE 更有效。

此外,这可能会被简化,例如如果您需要 ABC_ 或 DE_ 后跟任意两位或三位数字:

       REGEXP_SUBSTR(Description,'(ABC_|DE_)([0-9]{2,3})') AS match

关于sql - 需要根据单词列表在 Teradata SQL 中搜索文本字段并返回该单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586193/

相关文章:

mysql - SQL - 从组中检索平均分数

python - 高效的字典搜索?

c# - 在大量数据中快速(子)字符串搜索

mysql BLOB和TEXT数据类型区别

sql - 带有两个参数的 Rails 查询在生产环境中不起作用 : Operator does not exist

sql - 有通用的方法可以用触发器替换参照约束吗?

java - jOOQ - 用于插入的多字段

search - Vim 状态行 : Word search

mongodb - mongodb文本搜索错误没有文本索引

java - 如何限制 JTextArea 的最大行数和列数?