有二种表,
一张表TAB_A,字段有COLUMN_A,存放SQL代码比如:IF 1 = 2 THEN 1 ELSE 2 END; VAR A = 'CCAV'
另一张表TAB_B,字段有COLUMN_A和COLUMN_B,COLUMN_A 存放着:IF ,COLUMN_B 存放着:如果
就是代码和注释对着表
我想问问,怎么select * from tab_a;把字段COLUMN_A翻译成注释展现出来:如果如下:如果 1 = 2 THEN 1 其它 2 结局; 变量 中央电视台 = 'CCAV'

解决方案 »

  1.   


    --建表
    create table tab_a as(
    select 'if 1=2 then 1 else 2 end; var a=''ccav''' cola
    from dual)create table tab_b as(
    select 'if' cola,'如果' colb from dual union all
    select 'else','其他' from dual union all
    select 'end','结局' from dual union all
    select 'var','变量' from dual union all
    select 'ccav','中央电视台' from dual)--建函数
    create or replace function fun_replace(v_char  varchar2)
    return varchar2
    as
    n_char varchar2(4000);
    begin
    n_char:=v_char;
    for i in (select * from tab_b)
    loop
    n_char:=replace(n_char,i.cola,i.colb);
    end loop;
    return n_char;
    end;
    select fun_replace(cola) from tab_a;FUN_REPLACE(COLA)
    ----------------------------------------------------
    如果 1=2 then 1 其他 2 结局; 变量 a='中央电视台'
      

  2.   

    除了用自定义函数,oracle这块有没有自带函数支持?
      

  3.   

    真看不懂:IF 1 = 2 THEN 1 ELSE 2 END; VAR A = 'CCAV'
    1=2永远是false,不知道楼主想表达什么可不可以这样理解:
    TAB_A是业务表,里面有字段COLUMN_A
    TAB_B是代码表,里面存的是代码COLUMN_A字段和代码的注释COLUMN_B字段
    然后查询A表的时候,把COLUMN_A这个字段的注释也显示出来,如果是这样的话,应该这样写:Select t1.Column_a,
           (select t2.column_b from tab_b t2 where t2.column_a = t1.column_a)
      from tab_a t1
      

  4.   

    人家可能想让你把这个句子通过另一个字典表 B 来把它翻译成中文。IF 1 = 2 THEN 1 ELSE 2 END; VAR A = 'CCAV'
    => 如果 1 = 2 那么 1 否则 2 结束, 变量 A = "中央电视台".如果我们能把它从英文翻译成中文,那是不是也可以反过来把中文翻译成英文呢?如果真能有比较高的准确率,那我们的软件在某种程序上提供一个脚本语言支持让用户用麦克风来描述他希望的查询数据的逻辑,我们把只需要把里面可以用到的表的字段列出来让用户“讲出来”就行了,比如,“查找所有名字=CCAV 的用户发布的广告”,我们把它翻译成 "select * from 广告 where customer = 'A'"。