使用正则表达式提取 Snowflake 中的特定文本

Ans*_*sip 2 snowflake-cloud-data-platform

数据输入/表

想要获取键[工单描述:]的值并打印它。

使用的脚本:

CREATE TABLE demo3 (id INT, log VARCHAR);
INSERT INTO demo3 (id, log) VALUES 
(1, 'Work order submitted on 12-03-2020
Work Order Description:Lights are not working
Work order status:Completed'),
(2, 'Work order submitted on 5-04-2020
Work order Priority:P3
Work Order Description:Electrical equipment issue
Work order status:Completed');
Run Code Online (Sandbox Code Playgroud)

实现的解决方案: select id, substr(log, regexp_instr(log, 'Work Order Description:') + 23, 300) as log from demo3;

实施的解决方案输出:

id log
1  Lights are not working Work order status:Completed
2  Electrical equipment issue Work order status:Completed
Run Code Online (Sandbox Code Playgroud)

问题: 最后几行也附加到输出。相反,我希望修剪该行末尾的输出。

所需输出:

1, Lights are not working
2, Electrical equipment issue
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。提前致谢。

Fel*_*ffa 6

您可以使用REGEXP_SUBSTR()如下所示:

WITH data AS (
SELECT 2 AS id, 'Work order submitted on 5-04-2020
Work order Priority:P3
Work Order Description:Electrical equipment issue
Work order status:Completed' AS log
)

SELECT id, REGEXP_SUBSTR(log, 'Work Order Description:(.*)', 1, 1, 'e')
FROM data
Run Code Online (Sandbox Code Playgroud)