[英]extract substring using pl sql
我有一个包含以下数据的表T1
Sno Ns_NAME Mode stat 1 AF_rtf_Nd_1 Manual 2 2 AF_rtf_Nd_2 Manual 3 3 AF_rtf_Nd_2i Manual 2 4 AF_rtf_Nd_3 Auto 2 5 AF_rtf_Nd_3i Auto 3
我需要在下面表演
检查它是否是手动的,从Ns_NAME取到最后的“ _”,并检查是否重复。 在这种情况下,有1个重复项。 获得这两行的平均状态[(2 + 3)/ 2],然后泵入另一个表T2。
输出:
T2
AF_rtf_Nd Manual 2.5
我尝试使用substr函数并使用etract。 但这并没有获得正确的结果。
为了仅查看“手动”记录,请使用WHERE
子句。 然后在子字符串上聚合。 您可以使用INSTR
加SUBSTR
或REGEX_REPLACE
获得子字符串。 然后仅使用HAVING COUNT(*) > 1
保留重复项。
insert into t2
select
min(sno),
regexp_replace(ns_name, '_[^_]*$', ''),
'Manual',
avg(stat)
from t1
where mode = 'Manual'
group by regexp_replace(ns_name, '_[^_]*$', '')
having count(*) > 1;
与具有INSTR
和SUBSTR
的REGEXP_REPLACE
等效为
substr(ns_name, 1, instr(ns_name, '_', -1) - 1)
(唯一的区别是字符串中根本没有“ _”。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.