今天遇到一个问题,在设计表结构的时候打算在某一个字段中存储了以';'进行分割的字符串,类似于这种形式:2312432;56544;32346;9878675;380547321。我们要求在数据展现的时候按照';'来把每一个子字符串展现成如下形式:
2312432
56544
32346
9878675
380547321
记得Oracle里有回车换行:chr(10)--------回车 chr(13)--------换行
本来打算这样做:在进行sql语句查询的时候,使用instr和substr函数来将字符串分割成子字符串,然后把子字符串通过回车换行符号连接起来。不过这样实现起来比较麻烦,因为子字符串太多,不好分割。
后来尝试了一下将回车换行符加入到insert语句中,发现是可行的,这样在设计字段的时候可以加入回车换行符,从而避免了字段二次处理的麻烦。
插入带有回车换行符的内容:
SQL> create table t(abc varchar2(100));
表已创建。
SQL> insert into t(abc) values('abcdef'||chr(10)||chr(13)||'hjkml');
已创建 1 行。
SQL> select * from t;
ABC
--------------------------------------------------------------------------------
abcdef
hjkml
查询字段中带有回车换行符的数据:
SQL> select * from t where instr(abc,chr(10)||chr(13))>0;
ABC
--------------------------------------------------------------------------------
abcdef
hjkml
去掉字段中的回车换行符:
SQL> update t set abc=replace(abc,chr(10)||chr(13),'')
2 where instr(abc,chr(10)||chr(13))>0
3 ;
已更新 1 行。
SQL> select * from t;
ABC
--------------------------------------------------------------------------------
abcdefhjkml
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15203236/viewspace-594522/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15203236/viewspace-594522/