【发布时间】:2019-03-07 11:01:29
【问题描述】:
假设我有以下 string 包含从 SELECT 子句中提取的 SQL 语句(实际上这是一个包含数百个此类语句的巨大 SQL 语句);
SUM(case when(A.money-B.money>1000
and A.unixtime-B.unixtime<=890769
and B.col10 = "A"
and B.col11 = "12"
and B.col12 = "V") then 10
end) as finalCond0,
MAX(case when(A.money-B.money<0
and A.unixtime-B.unixtime<=6786000
and B.cond1 = "A"
and B.cond2 = "4321"
and B.cond3 in ("E", "F", "G")) then A.col10
end) as finalCond1,
SUM(case when(A.money-B.money>0
and A.unixtime-B.unixtime<=6786000
and B.cond1 = "A"
and B.cond2 = "1234"
and B.cond3 in ("A", "B", "C")) then 2
end) as finalCond2
如何在函数上拆分此查询(即SUM、MAX、MIN、MEAN 等),以便我可以提取最后一个查询但不删除分隔符(在本例中为SUM)?
因此,所需的输出将是如下所示的字符串:
SUM(case when(A.money-B.money>0
and A.unixtime-B.unixtime<=6786000
and B.cond1 = "A"
and B.cond2 = "1234"
and B.cond3 in ("A", "B", "C")) then 2
end) as finalCond2
PS:出于演示目的,我提供了某种缩进,但实际上这些语句用逗号分隔,这意味着原始形式中不会出现空格或换行。
【问题讨论】:
-
你试过用逗号(
,)分割吗? -
@Ralf 在这种情况下不起作用。拆分
,(sql.split(',').pop()) 将得到"C")) then 2 end) as finalCond2 -
嗯...和
.split(',\n')? -
@Ralf 也不起作用。出于演示目的,我提供了某种缩进,但实际上这些语句只是用逗号分隔,这意味着原始形式中不会出现空格或换行。