2012/5/7

[PL/SQL] PLSQL Split Chinese Words 中文字長度切割


PL/SQL中文字長度切割
Author: Raymond
Date:2012/05/07

中文字在 PLSQL DB 裡佔了3個char的位子,利用這個特性我們算出正確欲結束的字元位址並製成一個Function供大家參考




/*********************************************************
      2012.03 Raymond / Willie Chou
      Input Parameter - 1: 輸入字串,  2. 長度限制
      Output  parameter: 切字串的位置 substr(input_string, 1, output_parameter);
***********************************************************/
    
function split_loc(
          input_str varchar2-- input string,
          limit_byte  number-- length limitation (in bytes)
        return number          -- split location
        is 
          loc number(5);                                                
          max_len number(5);
         
        begin          
          loc := trunc(length(limit_byte) / 3);
          max_len := length(input_str);
          loop
             exit when lengthb(substr(input_str,1,loc+1)) > limit_byte or (loc + 1) > max_len;
            loc := loc + 1;
          end loop;
          return loc;
     end;

沒有留言: