+ -
当前位置:首页 → 问答吧 → 很奇怪的substr的问题,求解~~

很奇怪的substr的问题,求解~~

时间:2011-12-06

来源:互联网

源数据是这样
SQL code

select z.shiftcode shiftcode from zz_lens_to_q_summary z 
1    5F
2    5F
3    5F
4    5F
5    5H
6    5H
7    5H
8    5H
9    5H



截取一个字符,但出来的结果为空,无论有没有trim。
SQL code

select substr(z.shiftcode,1,1) shiftcode from zz_lens_to_q_summary z
select substr(trim(z.shiftcode),1,1) shiftcode from zz_lens_to_q_summary z

结果为空,但不像null,因为null底色不一样。



截取两个字符,显示的结果是一个字符。
SQL code

select substr(trim(z.shiftcode),1,2) shiftcode from zz_lens_to_q_summary z

1    5
2    5
3    5
4    5
5    5
6    5
7    5
8    5


截取一个字符,但后面和另一个字符串组合,截取的字符串出来了,但是后面跟着的‘课’字没了。
SQL code

select substr(z.shiftcode,1,1)||'' shiftcode from zz_lens_to_q_summary z

1    5
2    5
3    5
4    5
5    5
6    5
7    5
8    5
9    5



求解~~请问各位高人这是什么原因导致的?

作者: l3751202   发布时间: 2011-12-06

按照你说的模拟了。一切正常:
create table temp(str varchar2(20));
select a.*,rowid from temp a;
--手动添加数据

select substr(t.str,1,1) from temp t;结果如下:
1 5
2 5
3 5
4 5
5 5
6 5
7 5
8 5
9 5

select substr(trim(t.str),1,2) s from temp t;结果如下:
5F
5F
5F
5F
5H
5H
5H
5H
5H

select substr(trim(t.str),1,2)||'test' s from temp t;结果如下:
5Ftest
5Ftest
5Ftest
5Ftest
5Htest
5Htest
5Htest
5Htest
5Htest

作者: howloncampus   发布时间: 2011-12-06

引用 1 楼 howloncampus 的回复:

按照你说的模拟了。一切正常:
create table temp(str varchar2(20));
select a.*,rowid from temp a;
--手动添加数据

select substr(t.str,1,1) from temp t;结果如下:
1 5
2 5
3 5
4 5
5 5
6 5
7 5
8 5
9 5

select subs……


我也想过是否和我的Table有关系,可是为什么最后一句SQL 合并字符的时候被截掉的是合并的字符而不是从字段截取的字符呢

作者: l3751202   发布时间: 2011-12-06

select substr(trim(t.str),1,2)||'test' s from temp t;结果如下:
5Ftest
5Ftest
5Ftest
5Ftest
5Htest
5Htest
5Htest
5Htest
5Htest

这条怎么了?是正常的结果~~你想表达什么?

作者: howloncampus   发布时间: 2011-12-06

引用 3 楼 howloncampus 的回复:

select substr(trim(t.str),1,2)||'test' s from temp t;结果如下:
5Ftest
5Ftest
5Ftest
5Ftest
5Htest
5Htest
5Htest
5Htest
5Htest

这条怎么了?是正常的结果~~你想表达什么?


汗,哥们儿,要是我的结果和你的结果一样,我还会在这提问么

作者: l3751202   发布时间: 2011-12-06

恩。你再研究研究,有解决了,上来晒一下什么原因

作者: howloncampus   发布时间: 2011-12-06