Oracle下的Length()函数不克不及区分中英文,只能失失字符数而不克不及失失字节数,很多时候拔出string到字段中时







 Oracle下的Length()函数不克不及区分中英文,只能失失字符数而不克不及失失字节数,很多时候拔出string到字段中时总要长辈行一次检查,防备string长度超越了字段定义的长度,平凡巨匠都是把这个检测放到利用按次中实验,用我写的这个小函数就可以实此刻数据库服务器端对要拔出的字段举办检测。

create or replace function f_henry_GetStringLength(pv_String in varchar2) return integer is

  Result integer;

  i number;

begin

  Result:=0;

  if length(pv_String)=0 then

    return(Result);

  end if;

  for i in 1 .. length(pv_String) loop

    if ascii(substr(pv_String,i,1))<256 then

      Result:=Result 1;

    else

      Result:=Result 2;

    end if;

  end loop;

  return(Result);

end f_henry_GetStringLength;



/夷易近主夷易近主夷易近主夷易近主夷易近主夷易近主*以下是测试夷易近主夷易近主夷易近主夷易近主夷易近主夷易近主奸淫/

SQL> select length('啊$@oii发大幅') from dual;

LENGTH('啊$@OII发大幅')

-----------------------

                      9

SQL> select f_henry_GetStringLength('啊$@oii发大幅') from dual;

F_HENRY_GETSTRINGLENGTH('啊$@O

------------------------------

                            13





版权声明: 原创作品,允许转载,转载时请务必以超链接编制标明文章 原始来由 、作者信息和本声明。否则将追查执法责任。