表名:table;字段名:field
字段内的内容为:a|b|c|d|e|f|g
我想取得字段中前三个内容,即a|b|c,不知道sql语句怎么写
大家帮忙看看

解决方案 »

  1.   

    select left(field,6) from table
      

  2.   

    select substring(field,1,3) as field from table
      

  3.   

    错了 应该是 这个 select substring(field,1,5) as field from table
      

  4.   

    a|b|c|d|e|f|gselect substring(field,1,1) , substring(field,3,1) , substring(field,5,1) from table
      

  5.   

    select left(field,5) from tablename 这样应该可以~
    楼主试一下,有什么问题再贴出来~
      

  6.   

    left(field,5)哈哈!create runction ff(
    @s varchar(8000)=field,
    @split varchar(100)
    )returns @re table(col varchar(100))
    as
    begin
    declare @splitlen int
    set @splitlen=len(@split+'a')-2
    while charindex(@split,@s)>0
    begin
    insert @re values(left(@s,charindex(@split,@s)-1))
    set @s=stuff(@s,1,1charindex(@split,@s)+@splitlen,'')
    end
    insert @re values(@s)
    return
    end
      

  7.   

    declare @t table(field varchar(100))
    insert into @t select 'a|bb|c|d|e|f|g' union select 'z|yz|x|w|v|u|n'
    declare @i int
    select left(field,charindex('|',field,charindex('|',field,charindex('|',field)+1)+1)-1) from @t
      

  8.   

    修正,考虑不足三个的,如 'z|y' 和'm'
    declare @t table(field varchar(100))
    insert into @t select 'a|b|c|d|e|f|g' union select 'z|y|x|w|v|u|n' union select 'z|y' union select 'm'select case when len(field) - len(replace(field, '|', '')) >=3 
    then left(field,charindex('|',field,charindex('|',field,charindex('|',field)+1)+1)-1) else field end from @t
      

  9.   

    大家误会我的意思了,a|b|c|d|e|f|g
    我只是举个例子,abcdefg的内容是未知的,我只是知道这样的形式
      

  10.   

    我是真的没有明白lz的意思。
    select substring(field,1,1) , substring(field,3,1) , substring(field,5,1) from table????
      

  11.   

    select left(field,5) from table