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函数中的单词列表的情况下,如何执行此操作会陷入困境。
这样做可能有更好的方法,我希望能有一些指导。
正如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)