SPEC NO.:123456
SPEC NO.:789012
SPEC NO.:33668535
SPEC NO.:2587981在数据库里的一个字段如上。我想截取
SPEC NO.:后面的字符,只截五位,请问sql怎么写?注意SPEC后面有一个空格。

解决方案 »

  1.   

    SPEC NO.:后面的五位。。SPEC NO.:123456   ->12345
    SPEC NO.:789012   ->78901
    SPEC NO.:33668535 ->33668
    SPEC NO.:2587981  ->25879
    就像这样。
      

  2.   


    不行,SPEN前面还有一大堆乱的数据比如abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs 
    fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda
      

  3.   

    substring([SPEC NO],1,5)
    或者left([SPEC NO],5)
      

  4.   


    abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs 
    fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda
    12fastaqf21d3a fad SPEC NO.:3344580 asf21354 如果是这样呢?
      

  5.   

    declare @table table(a varchar(500))insert into @table
    select 'abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs ' union all
    select 'fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda'
    select substring(a,charindex('NO.:',a)+4,5) from @table
      

  6.   

    select substring('SPEC NO.:33668535',10,5)---------- 
    33668(所影响的行数为 1 行)
      

  7.   

    晕,再说清楚点表名为test,字段名为time
    内容大概是下面这样abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs 
    fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda 
    12fastaqf21d3a fad SPEC NO.:3344580 asf21354 提取 SPEC NO.:后面的五位。。
    SPEC NO.:123456  提取后是12345 
    SPEC NO.:789012  提取后是78901 
    SPEC NO.:33668535 提取后是33668 
    SPEC NO.:2587981  ->25879 
      

  8.   

    select substring(time ,charindex('NO.:',time )+4,5) from test
      

  9.   


    declare @table table(a varchar(500))insert into @table
    select 'abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs ' union all
    select 'fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda' union all
    select '12fastaqf21d3a fad SPEC NO.:3344580 asf21354 'select 
    [结果]=substring(substring(a,charindex(':',a),len(a)-charindex(':',a)+1),2,charindex(' ',substring(a,charindex(':',a),len(a)-charindex(':',a)+1))-2) 
    from @table
    /*

    123456
    67890
    3344580
    */
      

  10.   

    substring('SPEC NO.:33668535',10,5)
      

  11.   

    Left right函数可以解决你的问题
      

  12.   


    select substring(time,charindex('NO.:',time)+4,5) from test
      

  13.   


    楼上正解
    select SUBSTRING([time],CHARINDEX('NO.:',[time])+4,5) from test
      

  14.   

    晕倒,我试过了,都不行。表名为test,字段名为time 
    内容大概是下面这样 abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs 
    fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda 
    12fastaqf21d3a fad SPEC NO.:3344580 asf21354 提取 SPEC NO.:后面的五位。。 fadfSPEC NO.:123456  提取后是12345 
    abgSPEC NO.:789012  提取后是78901 
    teadSPEC NO.:33668535 提取后是33668 
    12487SPEC NO.:2587981  提取后是25879 
    下面还有上千条像上面这样的。。
      

  15.   

    select substring([time],charindex('NO.:',[time])+4,5) from [test]
      

  16.   

    正解~select substring([time],charindex('NO.:',[time])+4,5) as time
    from[test] 
      

  17.   

    declare @str varchar(100)
    set @str='fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda'
    select substring(@str,charindex(':',@str)+1,5)
    /*
      67890
    */
      

  18.   

    declare @t table(col varchar(60))
    insert @t select 'abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs'
    insert @t select 'fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda'
    insert @t select '12fastaqf21d3a fad SPEC NO.:3344580 asf21354'select *,substring(col,charindex('NO.:',col)+4,5) as result
    from @t
    /*(1 行受影响)(1 行受影响)(1 行受影响)
    col                                                          result
    ------------------------------------------------------------ ----------
    abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs          12345
    fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda                  67890
    12fastaqf21d3a fad SPEC NO.:3344580 asf21354                 33445(3 行受影响)*/
      

  19.   

    select substring([test],(charindex('NO. :',[test])+5),5)from [test] 这样改了一下后正常了因为中间有个空格
      

  20.   


    declare @testtable(time varchar(60))
    insert @test select 'abcfadfd dafsb asdf ds SPEC NO.:123456 fdsaf fdasfs'
    insert @test select 'fdadafsb fdf ds SPEC NO.:67890 fdsaf fdafda'
    insert @test select '12fastaqf21d3a fad SPEC NO.:3344580 asf21354'
    select *,substring(time ,charindex('NO.:',time)+4,5) as result
    from @test
    我测试过了,是可以的