【发布时间】:2020-11-21 03:40:57
【问题描述】:
我想问是否有人可以就 Teradata/SQL 查询提供任何建议。作为我日常职责的一部分,我经常在数据库中运行字符串/文本/批量搜索,以查找大量字符串/名称列表(例如,动物物种 A、B、C、D,这些列表可能会达到 700 甚至 1,100一次命名)。通过“LIKE ANY”语句和每个字符串前后的一些“%”字符提取和导出数据我没有问题。
我遇到的问题是 SQL/Teradata 会给我我需要的东西,但是我的语句没有突出显示每个从我使用的列表返回的特定数据行中找到的实体。另外,有些字符串可以在 2-3 个不同的列中找到,而不仅仅是 1 列)例如,如果我有 700 种动物并且我的语句返回 25,000 个数据点,那么匹配哪个字符串会非常有益在给定列中找到并避免手动创建其他列并在例如 excel 中查看数据。
例如,将显示的附加列“为第 1 列找到的名称/实体”(例如,第 2 行的匹配项是“狗种类 124”,第 1,023 行是“猫种类 456”)将证明非常有用。
下面我附上一个示例语句:
SELECT *
FROM Table_Animal_Species
WHERE Date BETWEEN '2005' AND '2010'
AND
(
SpeciesColumn1 LIKE ANY ('%cat 123%', '%dog 456%') Or
SpeciesColumn2 LIKE ANY ('%cat 123%', '%dog 456%') Or
SpeciesColumn3 LIKE ANY ('%cat 123%', '%dog 456%') Or
)
提前感谢您的任何建议!
【问题讨论】:
-
一列能否匹配多个名称,即
'%cat 123%', '%dog 456%'和SpeciesColumn1?
标签: sql teradata teradata-sql-assistant