首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > Oracle截取字符串
【标  题】:Oracle截取字符串
【关键字】:Oracle
【来  源】:http://www.cublog.cn/u/7121/showart.php?id=137635

Oracle截取字符串

字符集为西欧字符集Oracle截取字符串
作者:olivenan
msn:olivenan@hotmail.com
由于Oracle系统采用的是西欧字符集WE8ISO8859P1,所以导致在截取字母和汉字组合的字符串时经常会产生乱码,这是由于截取了半个汉字所致。
经过试验找到其截取方法:
1、首先建立一个保存ascii值从32到126的字符
-- Create table
create table ENGLISHWORDS
(
  WORDS       VARCHAR2(2),
  ASCILLVALUE NUMBER(3)
)
2、编写函数
i_title为输入的字符串,i_len 截取长度为偶数
create or replace function substringtitle(i_title in varchar2,i_len in number)
  return varchar2 is
  -- Result  varchar2(200);
  i        int := 0;
  v_title  varchar2(200);
  v_word   varchar2(10);
  v_number int;
begin
  select substr(i_title, 1, i_len) into v_title from dual;
  --select length('strtest')-length(replace('strtest','t')) from dual;  
--每次截取一个字符然后查找其在表englishwords 是否存在,如果存在i加1
--注:虽然在截取过程中会出现截取半个汉字的情况,考虑到englishwords表中只存在英文字符,所以此时也不会找到对应的项
  for b in 1 .. i_len loop
    v_word := substr(v_title, b, 1);
    begin
      select 1 into v_number from englishwords t where t.words = v_word;
      i := i + 1;
    exception
      when no_data_found then
        null;
    end;
  end loop;
  /* for a in (select words from englishwords) loop
  v_word:=a.words;
    if (instr(v_title, v_word) > 0) then
      i := i + 1;
    end if;
  end loop;*/
--查看英文字符出现的次数,如果是奇数,上面的截取结果就出现了乱码,所以需要将最后半个字符舍去
  if (mod(i, 2) = 1) then
    v_title := substr(v_title, 1, i_len-1);
  end if;
  --result := v_title;
  null;
  return(v_title);
end;
如果大家有什么好的方法,欢迎提出,谢谢。
终于把oracle 10g安装在Redhat AS 4成功啦:【上一篇】
dbms_lock.sleep:【下一篇】
【相关文章】
  • 终于把oracle 10g安装在Redhat AS 4成功啦
  • 修补Oracle可执行文件路径丢失
  • Oracle分区技术
  • Oracle/PLSQL: To_Char Function
  • 配置Oracle9i的归档模式
  • hp-tru64 cluster中如何把oracle 作为application放进去?
  • ORACLE 9201 FOR AIX 5L(5.3)的安装文档
  • 在solaris 8中安装oracle 10G
  • XP下配置ORACLE客户端
  • FC5下的Oracle10g下点滴之2006/07/02
  • 【随机文章】
  • [设计模式]Asp.Net Forums 代码中的web设计模式
  • 教您配置Web应用环境实现JSP留言簿开发
  • 获取db2中占用资源比较多的sql语句
  • 关于爱情
  • CPU超频初级教程
  • Bluetooth技术继续前进
  • 7 struts的流程
  • linux系统下大型/开源游戏下载
  • 他听书听得多了
  • x206/226/236/306/346 - SCSI机型配置集成的RAID-1
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.