--我有一个字符串(Toby,Jay,Robert) 我想输出为(Robert Toty Jay)
讲出一个方法并实现5分,绝不食言。
请贴出SQL代码

解决方案 »

  1.   

    你的字符串没有写好啊,
    并没有规律性的啊--我有一个字符串(Toby,Jay,Robert) 我想输出为(Robert Toty Jay)
    讲出一个方法并实现5分,绝不食言。
    请贴出SQL代码
    应该是(Toby,Jay,Robert)-->(Robert Jay Toby)
    方法:可以考虑如下.
    利用,作为分割符号.
    将对应的字符串获得.
    1.Toby
    2.Jay
    3.Robert
    这些放在临时表中.
    然后倒序排列.
    最后形成你要的字符串
      

  2.   


    --刚开始字符为
    Toby,Jay,Robert
    --输出为
    Robert Toty Jay
    我只看SQL代码
      

  3.   

    字符串都是这个规律,把最后一列插入第一列
    如果是这样子的话
    .那可以做临时表
    将字符串先拆开排序
    1.Toby 
    2.Jay 
    3.Robert 然后把最大值变为1,其他的都加1
    在合并即就可以了!
      

  4.   


    --刚开始字符为
    Toby,Jay,Robert
    --输出为
    Robert Toby Jay
    --不是
    Robert,jay,Toby
    --不过我也可以根据需要输出成你那样我只看SQL代码
      

  5.   

    begin
    dbms_output.put_line('Robert Toty Jay');
    end;
      

  6.   


    select t01,
           substr(t01,instr(t01,',',1,2)+1,length(t01)-instr(t01,',',1,2))
           ||' '||
           replace(substr(t01,1,instr(t01,',',1,2)),',',' ') from tt----------------------------------------------------
    1 Toby,Jay,Robert Robert Toby Jay
    给分吧
      

  7.   

    SELECT SUBSTR(SS, INSTR(SS, ',', 1, 2) + 1) || ' ' ||
           SUBSTR(SS, 1, INSTR(SS, ',', 1) - 1) || ' ' ||
           SUBSTR(SS,
                  INSTR(SS, ',', 1, 1) + 1,
                  INSTR(SS, ',', 1, 2) - 1 - INSTR(SS, ',', 1, 1))
      FROM (SELECT 'Toby,Jay,Robert' SS FROM DUAL);
      

  8.   

     8 楼 cosio 5分--到时候兑现
      

  9.   


    10 楼 oracledbalgtu  5分--到时候兑现
    --谢谢,还有没有简单的?
      

  10.   


    --不好意思,因有点事,LZ可以自行改一下:SQL>  CREATE OR REPLACE FUNCTION f_twodomain(http0 IN varchar2) RETURN varchar2 IS
      2     str1 varchar2(60);
      3     str2 varchar2(50);
      4     str3 varchar2(50);
      5     i    int;
      6     j    int := 1;
      7   begin
      8     For i in 1 .. 100 Loop
      9       if ascii(substr(http0, i, 1)) = 41 then
     10         return str3 || ' ' || str1 || ' ' || str2 || ')';
     11       end if;
     12       if ascii(substr(http0, i, 1)) = 44 then
     13         j := j + 1;
     14       end if;
     15       if j = 1 then
     16         str1 := str1 || substr(http0, i, 1);
     17       end if;
     18       if j = 2 then
     19         str2 := str2 || substr(http0, i, 1);
     20       end if;
     21       if j = 3 then
     22         str3 := str3 || substr(http0, i, 1);
     23       end if;
     24     End loop;
     25   end;
     26  /Function createdSQL> select f_twodomain('(Toby,Jay,Robert)') from dual;F_TWODOMAIN('(TOBY,JAY,ROBERT)
    --------------------------------------------------------------------------------
    ,Robert (Toby ,Jay)SQL>
      

  11.   

    如果字符串(Toby,Jay,Robert)的分隔符个数固定,就很简单.难点的是你的分隔符个数不确定.
      

  12.   


    13 楼 oracledbalgtu  5分--到时候兑现 
      

  13.   


    SQL> select regexp_substr('http://sina.com.cn/index','\..+/') from dual;REGEXP_S
    --------
    .com.cn/SQL> select regexp_substr('http://sina.com.cn/index','\..+/',1,1) from dual;REGEXP_S
    --------
    .com.cn/SQL> select regexp_substr('http://sina.com.cn/index','\..+/',1,2) from dual;R
    -
    问题是.com.cn/和.cn/都符合条件呀,为什么他就去了.com.cn/
    怎样取.cn/?SQL>
      

  14.   

    easy 
    SQL> select replace(substr(v_char,instr(v_char,',',1,2) + 1,length(v_char))
      2                 || ' ' ||
      3                 substr(v_char,1,instr(v_char,',',1,2) - 1),
      4                 ',',
      5                 ' ') cuancuan
      6   from (select 'Toby,Jay,Robert' v_char from dual)
      7  ;CUANCUAN
    ---------------
    Robert Toby JaySQL> 
      

  15.   

    你在研究茴香豆substr截断字符,instr判断分隔符所处位置,这都是必须的.
      

  16.   


    --高人指点...他就没用substr,instr
    select regexp_replace('Toby,Jay,Robert','(.+),(.+),(.+)','\3 \1 \2') from dual
      

  17.   

    regexp_replace
    这个是啥啊.
    没定义啊