【发布时间】:2021-09-23 12:28:07
【问题描述】:
我计划在我的 SQL 查询中嵌入 RegEx,因此不能真正为此使用循环。
基本上,我正在尝试检查一系列组,以查看我的列的名称是否包含任何这些单独组的所有属性(即,必须独立而不是完全检查组)。
例如,
group1 = l, w, q
group2 = o, l, d
如果列名包含group1 中的所有项目(例如low_quality)应返回true。同样,cold 也将返回 true,因为它匹配 group2 中的每个项目。
我将如何验证我的列名是否包含任何组中的每个项目? (项目可以是 >1 个字符,我有大约 40 个组要测试)。
可以修改以下几行吗?
SELECT column_name,
(CASE WHEN REGEXP_LIKE(column_name, ((?=l)(?=w)(?=q))|((?=o)(?=l)(?=d))) THEN true ELSE NULL
END) AS flag
FROM information_schema.columns;
我只是不确定如何独立检查多个组。
【问题讨论】:
-
我觉得你可以试试
REGEXP_LIKE(column_name, '^(?:(?=.*l)(?=.*w)(?=.*q)|(?=.*o)(?=.*l)(?=.*d))') -
是的,它奏效了。谢谢!
标签: sql regex list presto regexp-like