我将以一个真实案例的简化问题的形式提出一个问题。
给定:表 tab_1,列 col_1 为字符串类型,其中包含元素的枚举。我们举个例子:
WITH tab_1
AS (SELECT '4,5,44,46,3' col_1 FROM DUAL UNION ALL
SELECT '7,44' col_1 FROM DUAL UNION ALL
SELECT '67,32,5' col_1 FROM DUAL UNION ALL
SELECT '26,34,44' col_1 FROM DUAL)
SELECT col_1
FROM tab_1;
我们的任务是从 col_1 列的每一行中只提取一个元素,该列也包含在清单“32,34,5,44”中。如果该行具有清单中的两个元素,则取具有最高优先级的一个(优先级相同 32、34、5、44)。预期响应:
| result_val |
|------------|
| 5 |
| 44 |
| 32 |
| 34 |
问题:应该从 tab_1 发出什么请求?
我在任务的上下文中得到了这样的解决方案。一个特点是这里涉及通过正则表达式的行拆分,但在集合中的所有行中(而不是像大多数关于stackoverflow的问题那样,只有一行以函数的方式)。