oracle  we8iso8859p1字符集下  截取字符串   ,如何保证没有将一个汉字截成两端

解决方案 »

  1.   

    用substr可以保证截取出的都为完整字符啊。
      

  2.   

    我用的是substr,还是不行,这个字符集下,length和lengthb显示的字符长度是相同的,substr 截取的也是单个字节
      

  3.   

    SQL>  select lengthb('花'), length('花'), substr('花',1,1),substr('花',2,1)  from dual;
     
     LENGTHB('花')  LENGTH('花') SUBSTR('花',1,1) SUBSTR('花',2,1)
    ------------- ------------ ---------------- ----------------
                2            2                  
      

  4.   

    SQL> select lengthb('花'), length('花'), substr('花',1,1),substr('花',2,1) fromdual;LENGTHB('花') LENGTH('花') SU S
    ------------- ------------ -- -
                2            1 花
      

  5.   

    你这个是在ZHS16GBK字符集下执行的
    我的是在WE8ISO8859P1字符集下
      

  6.   

    -- 你的不行,是因为你的数据库的we8iso8859p1字符集不支持中文吧,所以会产生乱码!
    -- 或者是你的客房端的问题,去查查相关资料。这并不是你的substr()函数的问题!
      

  7.   

    不知道你这个字符集是什么东东
    如果不是字符集问题
    实在想实现就写个函数,判断当前是不是截取一半汉字,是的话长度加1
    func_spilt(需要截取的字符串,起始位置,长度)
    起始位置从0开始下个起始位置从“起始位置+长度”
    依此类推