在SQL中,如何实现将一字符串安要求来拆分
比如:我有一字符串 aaaa.bbbb
如何拆分成:aaaa   bbbb
问题是aaaa 和 bbbb的长度都是不固定的,谢谢指教!!

解决方案 »

  1.   

    substring()函数可以实现。
    比如:按你的要求:substring(aaaa.bbbb,1,4)这样得出aaaa
                      substring(aaaa.bbbb,5,8)这样得出bbbb
      

  2.   

    呵呵。上面的第二个错了,笔误:应该是substring(aaaa.bbbb,6,9)
      

  3.   

    http://www.tianyablog.com/blogger/post_show.asp?blogid=268822&postid=6100387
      

  4.   

    如果用sql本身的方法去分解可以用substring(string,startIndex,Length)
      

  5.   

    大家都弄错了,我举的例子是4个aaaa
    但我的意思是这个不是固定的,可能是5个a,可能是2个a
    谢谢各位关注
      

  6.   

    那你要说清楚嘛,浪费我们感情嘛.......
    你是要在数据库语句里实现还是读出这个字符串后再实现?
    如果是在数据库语句里面实现的话,还没有想到好的方法,如果已经从数据库里读出了这个字符串,要分割.号两边的字符应该可以的:
    用indexof取出小数点的位置,然后用substring取出就可以了......不知道你是不是这个意思,如果不是,请再详细说明你的用意,不要再浪费我们的感情了,555555555555555
      

  7.   

    谢谢你的提醒
    是这样的,这个数据是参数来的
    比如有一参数P_NUMBER,sql:select * from TB where ID=P_NUMBER
    而这个P_NUMBER就是形如:1.1,1.10,10.1.10.11这样的
    而‘.’左右位数都是不固定,如何去取,谢谢各位!
      

  8.   

    那就用我说的方法啊.先用indexof()取出'.'位置,因为indexof返回的是整数,然后用变量.substring(开始位置,结束位置)   取出就可以了.
      

  9.   

    select substring('aaa.aa',0,charindex('.','aaa.aaa'))
    select substring('aaa.aa',charindex('.','aaa.aaa')+1,len('aaa.aa')-charindex('.','aaa.aaa'))
      

  10.   

    我这是在ORACLE中哟,substing不对哟
      

  11.   

    先用indexof()查找"."的位置﹐然后取字符串
      

  12.   

    select head.order_number          订单编号,        
           rc.customer_number         客户编号,
           rc.customer_name_phonetic  客户简称,
           sib.segment1               物料代码,
           sib.description            描述,
           line.line_number           订单行号,
           line.ordered_quantity      订购数量,
           line.shipped_quantity      已发数量,
           line.flow_status_code      订单状态,
           line.unit_selling_price*line.ordered_quantity 金额,
           line.request_date          订购日期,
           line.actual_shipment_date  发货日期
      from oe_order_headers_all head, 
           oe_order_lines_all   line,
           ra_customers rc,
           Mtl_System_Items_b sib
     where 1=1
       AND head.sold_to_org_id = rc.customer_id
       AND head.header_id = line.header_id
       AND line.inventory_item_id = sib.inventory_item_id
       AND line.ship_from_org_id = sib.organization_id
       AND head.order_number=nvl(:P_ORDERED_NUMBER,head.order_number)
       AND rc.Customer_Number=nvl(:P_Customer_number,rc.Customer_Number)
       AND line.line_number=nvl(SUBSTR(:P_line_number,0,instr(:P_line_number,'.')-1),line.line_number)
       AND line.shipment_number=nvl(SUBSTR(:P_line_number,instr(:P_line_number,'.')+1,LENGTH(:P_line_number)),line.shipment_number)