请教SUBSTRB和trim的含义

jayli426 2006-11-08 10:23:07
例如
SQL> SELECT SUBSTRB('ABCDEFG',5,4.2) "Substring with bytes"
2 FROM DUAL;

Substring with bytes
--------------------
EFG

这是如何得出来的啊,


SQL> SELECT TRIM (0 FROM 0009872348900) "TRIM Example"
2 FROM DUAL;

TRIM Example
------------
98723489

如果我只想去掉首部分的0 呢?
即得到 9872348900的结果
请大虾指教阿
...全文
448 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiao1984 2006-11-08
  • 打赏
  • 举报
回复
呵呵,偶只是一个小小的菜鸟
substrb()子陌红尘已经说的很明确了,截取字符串,从第5位开始截取4.2个字节,因为字符串从第五个字符开始只剩下三个字节
jayli426 2006-11-08
  • 打赏
  • 举报
回复
谢谢xiaoxiao1984大虾,

请大虾还是解释一下
SUBSTRB('ABCDEFG',5,4.2)
4.2是什么意思啊??

不胜感激啊
xiaoxiao1984 2006-11-08
  • 打赏
  • 举报
回复
idle>select ltrim('uuuuuTHANKuuuu','u') from dual;

LTRIM('UU
---------
THANKuuuu
jayli426 2006-11-08
  • 打赏
  • 举报
回复
SUBSTRB('ABCDEFG',5,4.2)
4.2是什么意思啊??

SELECT TO_NUMBER(0009872348900) "TRIM Example"
我如果只想用trim实现呢??
如果是这中情况('uuuuuTHANKuuuu');
只去掉首部的'u'啊

请大虾再次指点啊
子陌红尘 2006-11-08
  • 打赏
  • 举报
回复
SELECT TO_NUMBER(0009872348900) "TRIM Example"
子陌红尘 2006-11-08
  • 打赏
  • 举报
回复
SUBSTRB('ABCDEFG',5,4.2)
从第5个字节开始截取字符,因为字符串从第五个字符开始只剩下三个字符。
stone1126 2006-11-08
  • 打赏
  • 举报
回复
select length('中国') from dual
结果是:2
select lengthb('中国') from dual
结果是:4
select substr('中国',1,2) from dual
结果是:中国
select substrb('中国',1,2) from dual
结果是:中

这个应该好理解吧
xiaoxiao1984 2006-11-08
  • 打赏
  • 举报
回复
1. 字符和字节不同
2. 数据库的字符集分为单字节字符集和多字节字符集
3. 在单字节字符集中substr = substrb
4. 在多字节字符集中substr 不一定等价于 substrb
例如,一个全角字符占据2个字节,sustr(全角字符,...) 不等价于substrb(...)
而a只占据一个字节,sustr('a',...) 等价于substrb(...)

jayli426 2006-11-08
  • 打赏
  • 举报
回复
能举例说明substr和substrb其中的 不同吗??
我还是有有些雾水啊??
大虾指教
xiaoxiao1984 2006-11-08
  • 打赏
  • 举报
回复
substr和substrb区别和数据库的字符集有关,如果是双字节的字符集,两者才会有不同;

substr取得的是字符个数,substrb取得是字节
Visual_Studio_Net 2006-11-08
  • 打赏
  • 举报
回复
小数那个好像没啥意义,俺也不太了解
substr和substrb是有区别的
SQL> select substr('12345',2,4) from dual;

SUBSTR('12345',2,4)
-------------------
2345

SQL> select substrb('12345',2,4) from dual;

SUBSTRB('12345',2,4)
--------------------
2345

SQL> select substr('12345',2,4) from dual;

SUBSTR('12345',2,4)
------------------------
2345

SQL> select substrb('12345',2,4) from dual;

SUBSTRB('12345',2,4)
-------------------------


后两个语句中是全码字符
jayli426 2006-11-08
  • 打赏
  • 举报
回复
要不这样问把,
SUBSTR与SUBSTRB区别在哪里,我执行
SQL> SELECT SUBSTR('ABCDEFG',5,4.2) "Substring with bytes"
2 FROM DUAL;

Substring with bytes
--------------------
EFG

也是同样结果啊???

而且请问,实际中带小数是否有意义呢???

我本来以为他是可以四舍五入的.例如执行
SQL> SELECT SUBSTR('ABCDEFG',5,2.8) "Substring with bytes"
2 FROM DUAL;

Substring with bytes
--------------------
EF

但是我们看到拉,结果还是只有两位,那么支持小数又有什么意义呢?仅仅为拉提供一个容错功能吗>>??

请大虾指教啊

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧