SELECT ID,
SUM(length(substr(DATA_STRING, instr(DATA_STRING,'P')+1)))
FROM DATA P, PLC PP
WHERE P.ID = PP.ID
AND instr(DATA_STRING, 'F') = 0
GROUP BY ID
上面的函数在每个数据字符串中查找P并计算字符串中的字符数。
所以我的问题是,我有两个条件可以发生,一个数据字符串可以包含P,如上所述,或者当它包含F.我需要能够检查两者然后总结总数。上面的问题是,如果字符串出现F,那么我总结为0。
我几乎需要相当于Excel中的SUMIF,以便我可以说当我搜索P时它是0,然后查找F并加上该长度,反之亦然。
如果您有任何建议,请告诉我们。
答案 0 :(得分:4)
length(substr(DATA_STRING, instr(DATA_STRING,'P')+1))
?这做了很多工作。
据我所知,您需要字符串中'P'
或'F'
之后的字符数总和。如果是这样的话:
SELECT ID,
SUM(CASE WHEN data_string like '%P%'
THEN len(DATA_STRING) - (instr(DATA_STRING, 'P') + 1) ELSE 0
END) as Num_P,
SUM(CASE WHEN data_string like '%F%'
THEN len(DATA_STRING) - (instr(DATA_STRING, 'F') + 1) ELSE 0
END) as Num_F
FROM DATA P JOIN
PLC PP
ON P.ID = PP.ID
GROUP BY ID;
我还修改了连接语法以使用显式连接。