需要针对单词列表在Teradata SQL中搜索文本字段并返回该单词

ped*_*ram 3 sql search text full-text-search teradata

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

Select *
  from sometable
 Where upper("Description") like any ("%ABC_123%", "%ABC_124%", "%DE_25%")
Run Code Online (Sandbox Code Playgroud)

我还想返回在查询中找到的单词,但是在不复制subtr函数中的单词列表的情况下,如何执行此操作会陷入困境。

这样做可能有更好的方法,我希望能有一些指导。

dno*_*eth 5

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

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

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

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

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