select substr('我们都是中国人',1,4) from dual;
select substr('dadsadsadcefdvsv',1,4) from dual;第一个语句中得到“我们都是”,是一个八个字符的字符串,第二个语句得到的是“dads”四个字符的字符串,而我本意是要得到一个四个字符的字符串,如果把第一个改为:
select substr('我们都是中国人',1,2) from dual;那么在取纯字母的字符串时又不对了。该如何处理,请高手指点。

解决方案 »

  1.   

    select substrb('我们都是中国人',1,4) from dual; 
      

  2.   

    SUBSTRB SYNTAX:     SUBSTRB(char,m [,n]) PURPOSE:     The same as SUBSTR, except that the arguments m and n are expressed 
        in bytes, rather than in characters.  For a single-byte database 
        character set, SUBSTRB is equivalent to SUBSTR. 
      

  3.   

    substr()是按字符个数截取,substrb()按字符数截取
      

  4.   

    不好意思,笔误,正确的应该是substr()是按字符个数截取,substrb()按字节数截取
      

  5.   

    substr()是按字符还是字节截取和字符集有关的!中文字符集是安字符截取,英文字符集是按字节截取.
      

  6.   

    substr()是按字符个数截取,substrb()按字节数截取
      

  7.   

    碰巧刚刚看见有人问substr 和substrb的区别。。有点明白了。。