sql 用正则表达式解析 case 结束表达式 preg_match_all
sql parse case end expression with regular expressions preg_match_all
我尝试从 oracle 查询中解析 case-end 表达式的内容。我使用以下正则表达式。
/((?<=case)[\w\s:\=\'\".\,()\<>-]*(?=end)){1}?/gi
sql 部分是:
DECODE(
SUM(
CASE WHEN a.art_ind IN ('NORMAL', 'MVAR') THEN 1 ELSE 0 END
),
0,
1,
SUM(
CASE WHEN a.art_ind IN ('NORMAL', 'MVAR') THEN 1 ELSE 0 END
)
)
)* 100,
2
) store_av,
但我得到了错误的结果,它得到了 2 个或更多个案例结束块。
请看下面。它需要 2 个案例结束而不是 1 个
有人可以提出解决方案吗?
((?<=case)[\w\s:\=\'\".\,()\<>-]*?(?=end)){1}?
^^
制作您的 *
非 greedy.See 演示。
我尝试从 oracle 查询中解析 case-end 表达式的内容。我使用以下正则表达式。
/((?<=case)[\w\s:\=\'\".\,()\<>-]*(?=end)){1}?/gi
sql 部分是:
DECODE(
SUM(
CASE WHEN a.art_ind IN ('NORMAL', 'MVAR') THEN 1 ELSE 0 END
),
0,
1,
SUM(
CASE WHEN a.art_ind IN ('NORMAL', 'MVAR') THEN 1 ELSE 0 END
)
)
)* 100,
2
) store_av,
但我得到了错误的结果,它得到了 2 个或更多个案例结束块。
请看下面。它需要 2 个案例结束而不是 1 个
有人可以提出解决方案吗?
((?<=case)[\w\s:\=\'\".\,()\<>-]*?(?=end)){1}?
^^
制作您的 *
非 greedy.See 演示。