我正在一个大型数据库中搜索长度在 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/