oracle long类型处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle long类型处理相关的知识,希望对你有一定的参考价值。

怎么取出long类型中的两个固定字符串之间的内容?
例如取出 “阿娇打发时间地方开始打快点交罚款是大家分开撒旦飞洒快点发斯蒂芬大师法师打发士大夫士大夫撒旦法撒旦法师的思考的房间洒落的房间爱思考的激发时间的弗拉款到即发拉斯克奖放到卡上<moreinfo>经费达拉斯咖啡</moreinfo>店加拉斯款到即发”
中“<moreinfo>”和“</moreinfo>”中的内容

这应该是VARCHAR2型吧
用substr 截取处理
例如:

select substr(\'111111111111<moreinfo>my name is moreinfo </moreinfo><b>aaaaaaaa</b>\',
(INSTR(\'111111111111<moreinfo>my name is moreinfo</moreinfo><b>aaaaaaaa</b>\', \'<moreinfo>\', 1) +
(length(\'<moreinfo>\'))),
(INSTR(\'111111111111<moreinfo>my name is moreinfo</moreinfo><b>aaaaaaaa</b>\', \'</moreinfo>\', 1) -
(INSTR(\'111111111111<moreinfo>my name is moreinfo</moreinfo><b>aaaaaaaa</b>\', \'<moreinfo>\', 1) +
length(\'<moreinfo>\')))),

substr(\'111111111111<moreinfo>bbbbb</moreinfo><b>my name is b</b>\',
(INSTR(\'111111111111<moreinfo>bbbbb</moreinfo><b>my name is b</b>\', \'<b>\', 1) +
(length(\'<b>\'))),
(INSTR(\'111111111111<moreinfo>bbbbb</moreinfo><b>my name is b</b>\', \'</b>\', 1) -
(INSTR(\'111111111111<moreinfo>bbbbb</moreinfo><b>my name is b</b>\', \'<b>\', 1) +
length(\'<b>\'))))
from dual;
参考技术A 先转成Varchar类型,去字符操作就可以完成了,instr,substr

Oracle 查询Long类型

好久以前就碰过这个问题,今天找出原来写的一个函数

select b.remark,
       LONG_TO_CHAR(b.rowid, null, \'tmp20180518102050381\', \'remark\')
  from tmp20180518102050381 b;

 

 

CREATE OR REPLACE fUNCTION LONG_TO_CHAR(in_rowid      rowid, --rowid
                                        in_owner      varchar, --所有者   可空
                                        in_table_name varchar, --表名
                                        in_column     varchar2 --要查询的列名
                                        ) RETURN varchar AS
  text_c1 varchar2(32767);
  sql_cur varchar2(2000);
begin
  if length(in_owner) > 0 then
    sql_cur := \'select \' || in_column || \' from \' || in_owner || \'.\' ||
               in_table_name || \' where rowid = \' || chr(39) || in_rowid ||
               chr(39);
  else
    sql_cur := \'select \' || in_column || \' from \' || in_table_name ||
               \' where rowid =\' || chr(39) || in_rowid || chr(39);
  end if;
  dbms_output.put_line(sql_cur);
  execute immediate sql_cur
    into text_c1;

  text_c1 := substr(text_c1, 1, 4000);
  RETURN TEXT_C1;
END;

 

以上是关于oracle long类型处理的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何把long类型转换成字符类型

java mybatis对oracle long解决办法?

如何通过c#读取oracle数据库中的long类型字段

插入oracle的long类型,报字符串过长怎么解决

关于mybatis3.0处理long字段的问题

oracle中如何将long型的数据转换为char型