oracle数据转换方法,将字典表的id值以文本形式展示

  • (本文原创,引用请注明出处--zhangjieatbky)
  • 应用场景:例如,将某字段中存放的id值,如1,2,3转换成文本展示,如 篮球、足球、排球
    •  创建两张表
    • 1 create a1(id number(8),text varchar(15));        //创建字典表
      2 insert into a1 values(10,足球);
      3 insert into a1 values(11,篮球);
      4 insert into a1 values(12,羽毛球);
      5 insert into a1 values(13,排球);
      6
      7 create b1(bid number(8),btext varchar2(15));        //业务主表
      8 insert into b1 values(1000,‘10,11,13‘);
      9 insert into b1 values(2000,‘11,12‘);
    • 创建转换函数
    •  1 //创建函数
       2 create or replace function converter(
       3        p_bid b1.bid%type)
       4 return varchar2
       5 as
       6   v_len number(2);
       7   v_dict_text varchar(80);
       8   v_index binary_integer :=1;
       9   v_result varchar(150):=‘‘;
      10   v_temp1 varchar2(3);
      11   v_temp2 varchar2(50);
      12 begin
      13   select b1.btext into v_dict_text from b1 where bid=p_bid;
      14   select length(translate(v_dict_text, ‘a0123456789‘, ‘ ‘)) into v_len from dual;
      15   while v_index <= v_len+1 loop
      16     SELECT regexp_substr(v_dict_text, ‘[[:alnum:]]+‘, 1, v_index ) INTO v_temp1 FROM dual;
      17     SELECT TEXT INTO v_temp2 FROM A1 WHERE ID=v_temp1;
      18     v_result:=concat(concat(v_result,v_temp2),‘,‘);
      19     v_index := v_index+1;
      20   end loop;
      21   RETURN SUBSTR(v_result,0,length(v_result)-1);
      22 end converter;
      23
      24 //测试结果,如下图,成功将字典值转为文本值
      25 SELECT BID,converter(BID) TEXT from B1      
    • 结果如下

原文地址:https://www.cnblogs.com/zhangjieatbky/p/8137261.html

时间: 2024-11-13 21:45:41

oracle数据转换方法,将字典表的id值以文本形式展示的相关文章

PL/SQL Developer_如何快速获得表名或列名的文本形式

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/41513537 实验:使用PL/SQL Developer软件获得表名.列名的文本形式 操作过程: 例1:以"逗号"格式获取"用户表名"的文本 使用scott登陆到PL/SQL Developer,在All objects框处找到

--使用oracle数据先要创建表空间

one\--创建表空间 CREATE TABLESPACE 表空间的名字DATAFILE 'E:\oracle\app\userdata\java5space.dbf' --表空间物理文件路径SIZE 5m --初始大小AUTOEXTEND ON --是否自动增长 --创建用户create user java5user --用户名identified by "java5user" --密码default tablespace "JAVA5SPACE" --默认管理的

2018.5.19 Oracle数据操作和管理表的综合练习

--作业一.使用自己的用户登录,完成如下操作,并且创建5条测试数据 -- 创建学生表(stu),字段如下: -- 学号(stuID) -- 姓名(stuName) -- 性别(stuSex) -- 入学时间(stuDate) create table stu ( stuID number(12), stuName varchar(5), stuSex varchar(2) check(stuSex in('男','女')), stuDate date ); --二.请创建一个表,表名为phone

普通集合和泛型集合的区别,哈希表和字典表的区别,队列和堆栈的区别以及堆和栈的区别。

普通集合和泛型集合的区别: 泛型集合与传统集合相比 类型更安全. 泛型集合无需装箱拆箱操作. 泛型的重要性. 泛型是未来五年的主流技术 ... 通常情况下,建议您使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员.此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于从非泛型基集合类型派生的类型),因为使用泛型时不必对元素进行装箱. 下面的泛型类型对应于现有的集合类型: List 是对应于 ArrayList 的泛型类. Di

Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据

PRM 全称为ParnassusData Recovery Manager ,由 诗檀软件自主研发,拥有独立的软件著作权. PRM可以独立于Oracle软件运行,直接从Oracle数据文件中抽取表上的数据. 当以下几种场景中,都可以用上PRM: 无备份或者备份不可用情况下,数据表被意外truncate掉或者DROP掉 由于数据库损坏,导致的数据打不开 无法OPEN 数据块存在损坏,Oracle无法读取出数据 数据文件存在损坏,或者数据文件头信息不一致 等等 以上这些问题中,用户均可以考虑使用PR

1.12 dict 字典表

dict 字典表属于映射分类 dict的声明 >>> #dict类型 是 {}中包含若干个键值对 >>> d = dict() >>> d = {} >>> type(d) <class 'dict'> >>> #看来 一个键值对也没有的{}也是dict类型的 >>> >>> # 1 用{}来声明键值对 >>> man = {'name':'Mark'

一个表里有多个字段需要同时使用字典表进行关联显示,如何写sql查询语句

参考:https://bbs.csdn.net/topics/330032307 数据库里面有一个字典表,这张表里面有id段和对应的名字字段.在另外一个记录的表里面有对应的上述字典表的id,而且有多个字段都含有该id字段.需要将其查出来,并且用名字. SELECT a.id AS '编号', 'STORY' AS '类型' , a.title AS '标题',b.name AS '所属项目' ,a.project AS '所属项目' , c.realname AS '创建者', a.estima

SQLServer如何手动设置id值(主键)的自动增长

近期做东西,用到了对SQLServer数据库的操作.好吧,确实好久没看了,对这个数据库陌生到了极点,连最简单的如何设置一个id主键,让它随着插入数据的增多,自动增长id值的设置都忘记了,网上查了一下,好多人都说使用代码,好像跟我要的不一样,然后在百度知道找到了答案,虽然有点不好意思,但还是贴出来吧: 问:如何手动设置SQLServer的id(主键),让它随着插入的数据自动增长? 答:点击需要设置的表,点击右键——设计——在列中,点击id——下方出现如下的图: 自增定义: 然后点击确定即可!!!!

PHP获取MySql新增记录ID值的3种方法

From: http://www.jb51.net/article/51473.htm 这篇文章主要介绍了PHP获取MySql新增记录ID值的3种方法,一般使用PHP自带函数mysql_insert_id() 即可实现,另2种方法权作特殊情况下使用,需要的朋友可以参考下 一.使用语句: 复制代码 代码如下: mysql_query("select max(id) from t1",$link); 使用此方法得到的是 id最大的值,确为最后一个值,但当多链接线程时,这个最大的id并不一定