一个字符串的截取问题,急等,在线等!! 一个字符串‘000023|@|000001|@|测试数据|@|CSSJ|@|身份证件号码|@|1|@|963852147|&|000025|@|000001|@|测|@|cs|@|123|@|1|@|456|’"|@|" 代表列间隔 ""&""代表行间隔我需要把截取出来的字符串添加到数据表中去,有多少行就添加多少行!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个到开发工具中去处理应该更容易比如.net中有split函数,直接就可以把这个字符串切割成数组,然后逐项处理 这个用java的前台函数split比oracle里面的instr方便多了啊! 我就是从开发工具中把字符串传入oracle中进行处理的!想有过程了实现!!! 仅供参考DECLARE V_SQL VARCHAR2(20000); V_TEXT VARCHAR2(20000) := '000023|@|000001|@|测试数据|@|CSSJ|@|身份证件号码|@|1|@|963852147|&|000025|@|000001|@|测|@|cs|@|123|@|1|@|456';BEGIN V_SQL := 'INSERT INTO TABLE_NAME VALUS('' '; V_TEXT := REPLACE(V_TEXT, '|@|', ''','''); DBMS_OUTPUT.PUT_LINE(V_TEXT); V_TEXT := REPLACE(V_TEXT, '|&|', ''');INSERT INTO TABLE_NAME VALUES('''); DBMS_OUTPUT.PUT_LINE(V_TEXT); V_SQL := V_SQL || V_TEXT || ''');'; DBMS_OUTPUT.PUT_LINE(V_SQL); --EXECUTE IMMEDIATE V_SQL;END; 确实是简单,还有一种做法最好还是些一个split的function,这个网上g一把应该有很多的然后些一个procedure先用|&|做一次split,遍历得到的所有子串在对每个子串用|@|做split把得到的字串做为col放到一个行集里最后把行集out。 V_SQL VARCHAR2(20000); //?????????????????????oralce不是 varchar2 只能最大到 4000吗 ? 这个怎么回事啊 ? 你去google上找一个字符串分割的函数,就可以实现啦 我用的11G的可以支持到32767大小的varchar2 如果你的文本是规则的,就像你给出的例子通过将|@| 和 |&| 替换成相应的字符,如我给的例子。最后拼出oracle可以执行的insert语句。但是往往oracle中varchar2的大小是有限制的,我给只是一个思路而已,仅供参考。 关于dsn数据源的问题,请进 请教哥哥姐姐 求助Sql在線等。。。 查处表中第10到20行的数据 菜鸟提问!!!insert时,把字符串里的东东,怎么当做参数了!!! 请问:sybase中convert方法在oracle是什么关键字? 有关在pro*c中嵌入PL/SQL块的问题 请教一个sql 的高效写法 这样奇怪的事情? 我装的是ORACLE8i personal, 关于外键约束问题 sql loader问题
比如.net中有split函数,直接就可以把这个字符串切割成数组,然后逐项处理
这个用java的前台函数split比oracle里面的instr方便多了啊!
想有过程了实现!!!
V_SQL VARCHAR2(20000);
V_TEXT VARCHAR2(20000) := '000023|@|000001|@|测试数据|@|CSSJ|@|身份证件号码|@|1|@|963852147|&|000025|@|000001|@|测|@|cs|@|123|@|1|@|456';
BEGIN
V_SQL := 'INSERT INTO TABLE_NAME VALUS('' '; V_TEXT := REPLACE(V_TEXT,
'|@|',
''',''');
DBMS_OUTPUT.PUT_LINE(V_TEXT);
V_TEXT := REPLACE(V_TEXT,
'|&|',
''');INSERT INTO TABLE_NAME VALUES(''');
DBMS_OUTPUT.PUT_LINE(V_TEXT);
V_SQL := V_SQL || V_TEXT || ''');';
DBMS_OUTPUT.PUT_LINE(V_SQL);
--EXECUTE IMMEDIATE V_SQL;
END;
确实是简单,还有一种做法最好还是些一个split的function,这个网上g一把应该有很多的然后些一个procedure先用|&|做一次split,遍历得到的所有子串在对每个子串用|@|做split把得到的字串做为col放到一个行集里最后把行集out。
oralce不是 varchar2 只能最大到 4000吗 ? 这个怎么回事啊 ?
我用的11G的
可以支持到32767大小的varchar2
如果你的文本是规则的,就像你给出的例子
通过将|@| 和 |&| 替换成相应的字符,如我给的例子。最后拼出oracle可以执行的insert语句。
但是往往oracle中varchar2的大小是有限制的,我给只是一个思路而已,仅供参考。