declare @var varchar(4000)
set @var = 'a2e384c8-4329-40e1-8130-22482baae8de.doc|事中报告.doc'select
    left(@var,charindex('|',@var)-1),
    stuff(@var,1,charindex('|',@var),'')

解决方案 »

  1.   

    select substring(字段,1,stuff(a,'|')-1),substring(字段,stuff(a,'|'),len(字段)) from 表
      

  2.   

    declare @str varchar(1000)
    declare @i int
    set @str='a2e384c8-4329-40e1-8130-22482baae8de.doc|事中报告.doc'
    set @i=CHARINDEX ('|',@str)select left(@str,@i -1 )
    select substring(@str,@i + 1,888)
    ----结果
    a2e384c8-4329-40e1-8130-22482baae8de.doc(所影响的行数为 1 行)
      事中报告.doc(所影响的行数为 1 行)
      

  3.   

    --测试数据---
    declare @text varchar(100)
    set @text='a2e384c8-4329-40e1-8130-22482baae8de.doc|事中报告.doc'
    select substring(@text,0,charindex('|',@text)) as a,substring(@text,charindex('|',@text)+1,len(@text)) as b--输出结果----
    -------------------------------------------------------------------
                   a                                  b
    a2e384c8-4329-40e1-8130-22482baae8de.doc 一个是事中报告.doc
      

  4.   

    declare @var varchar(4000)
    set @var = 'a2e384c8-4329-40e1-8130-22482baae8de.doc|事中报告.doc'select
        col1 = left(@var,charindex('|',@var)-1),
        col2 = stuff(@var,1,charindex('|',@var),'')
    --测试结果
    col1                                          col2
    ----------------------------------------      ------------
    a2e384c8-4329-40e1-8130-22482baae8de.doc      事中报告.doc
      

  5.   

    这样select substring(字段,1,charindex(a,'|')-1),substring(字段,charindex(a,'|'),len(字段)) from 表
    哇,大家抢的好凶呀~~~
      

  6.   

    --try
    declare @s as varchar(80)
    set @s='a2e384c8-4329-40e1-8130-22482baae8de.doc|事中报告.doc'
    select left(@s,(select len(@s))-(select charindex('|',reverse(@s)) ) ),right(@s,(select charindex('|',reverse(@s)))-1 )--结果                                                            
    ---------------------                       ---------
    a2e384c8-4329-40e1-8130-22482baae8de.doc    事中报告.doc(所影响的行数为 1 行)
      

  7.   

    如果数据类型是ntext的不能用len方法求长度,有没有别的函数阿?谢谢
      

  8.   

    declare @ta table(id int, value ntext)
    insert @ta select 1, 'a2e384c8-4329-40e1-8130-22482baae8de.doc|事中报告.doc'
    select
        substring(value,1, patindex('%|%',value)-1),
        substring(value,patindex('%|%',value)+1, datalength(value))
    from @ta
      

  9.   

    create table #T(id int, value ntext)
    insert into #T select 1, 'a2e384c8-4329-40e1-8130-22482baae8de.doc|事中報告.doc'
    select
        substring(value,1, charindex('|',value)-1) as Col1,
        substring(value,charindex('|',value)+1, datalength(value)) as Col2
    from #T
      

  10.   

    declare @vString varchar(200)
    set @vString='a2e384c8-4329-40e1-8130-22482baae8de.doc|事中報告.doc'select left(@vString,charindex('|',@vString)-1),
    right(@vString,len(@vString)-charindex('|',@vString))要是有多個可以用循環來操作。
      

  11.   

    --通用的
    declare @vString varchar(200)
    declare @iCount int,@iPos int
    set @vString='a|b|cc|dd|cc|ee|ff'
    select @iCount=len(@vString)-len(replace(@vString,'|','')),@iPos=1
    while(@iPos<=@iCount)
    begin
    select left(@vString,charindex('|',@vString)-1
    select @iPos = @iPos+1,@vString=right(@vString,len(@vString)-charindex('|',@vString))
    end
    select @vString
    /*
    影響結果
    a
    b
    cc
    dd
    cc
    ee
    ff
    */