如何在字符串或表coulmn中找到未知的重复子字符串
发布时间:2020-12-15 02:15:18 所属栏目:Java 来源:网络整理
导读:我有一大串数字是程序的输入(我认为序列名称是’S’)它可以是字符串或表列. 由表 1生成的输入字符串(S). 我想找到制作“S”字符串的未知子字符串. 每个子字符串由100个数字组成. 我们简化了如下例子:每个子字符串包含三个数字而不是100个数字. 表1: 表1描
我有一大串数字是程序的输入(我认为序列名称是’S’)它可以是字符串或表列.
由表 1生成的输入字符串(S). 我想找到制作“S”字符串的未知子字符串. 每个子字符串由100个数字组成. 我们简化了如下例子:每个子字符串包含三个数字而不是100个数字. 表1: 表1描述: 输出是重复的子串,形成“S”字符串. 11,10,13 30,40,50 65,66,61 谁能帮助我用pl_sql或java来解决问题. 解决方法
这里有一些我认为可以解决你所描述的基本问题的PL / SQL.它将扩展到我认为的更大的数据集,但我不得不做出一些关于将数字拆分成组的假设.基本过程适用于您提供的数据,描述和结果.
SET SERVEROUTPUT ON; DECLARE TYPE numbers_t IS TABLE OF INT(2); TYPE output_t IS TABLE OF VARCHAR2(100); c_example VARCHAR2(160) := '2222222222111165656510101030306666666666134061134061616161611030303030306666666613131313134040404061505050505050505050506565656565656565656522222166666666666666'; c_place INT := 1; c_chunk INT := 1; l_numbers numbers_t := numbers_t(); l_output output_t := output_t(); n binary_integer; BEGIN l_output.EXTEND(3); WHILE c_place <= LENGTH(c_example) LOOP l_numbers.EXTEND(10); WHILE c_chunk <= 10 LOOP l_numbers(c_chunk) := SUBSTR(c_example,c_place,2); c_place := c_place + 2; c_chunk := c_chunk + 1; END LOOP; c_chunk := 1; l_numbers := SET(l_numbers); n := l_numbers.FIRST; WHILE (n IS NOT NULL) LOOP CASE WHEN l_numbers(n) < 30 THEN l_output(1) := l_output(1) || ',' || l_numbers(n); WHEN l_numbers(n) > 50 THEN l_output(3) := l_output(3) || ',' || l_numbers(n); ELSE l_output(2) := l_output(2) || ',' || l_numbers(n); END CASE; n := l_numbers.NEXT(n); END LOOP; l_numbers.DELETE(); END LOOP; DBMS_OUTPUT.PUT_LINE(TRIM(LEADING ',' FROM l_output(1))); DBMS_OUTPUT.PUT_LINE(TRIM(LEADING ',' FROM l_output(2))); DBMS_OUTPUT.PUT_LINE(TRIM(LEADING ',' FROM l_output(3))); END; / (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |