請問怎樣提取到一個自段裡的數值部分?

超領 !:43 EA
超領 !:1849 EA
超領 !:694.96 G且前面的 '超領 !'都是一樣的
如第一條紀錄我想取到 43

解决方案 »

  1.   

    declare @var varchar(20)
    set @var='超領 !:43 EA'
    select substring(@var,6,charindex(' ',stuff(@var,1,5,'')))
      

  2.   

    SELECT 
      STUFF(LEFT(col, 4 + PATINDEX('%[^0-9^.]%', STUFF(col, 1, 5, '') + 'A')), 1, 5, '')
    FROM tb
      

  3.   

    declare @t table(vars varchar(30))
    insert into @t select '超領 !:43 EA'
    insert into @t select '超領 !:1849 EA'
    insert into @t select '超領 !:694.96 G'
    select substring(vars,6,charindex(' ',stuff(vars,1,5,''))) as [str] from @t/*
    str                            
    ------------------------------ 
    43 
    1849 
    694.96 
    */
      

  4.   

    declare @ss varchar(100)
    set @ss='超領 !:1849 EA'
    select substring(@ss,6,charindex(' ',@ss,6)-6)
      

  5.   

    -- 测试
    SELECT 
    STUFF(LEFT(col, 4 + PATINDEX('%[^0-9^.]%', STUFF(col, 1, 5, '') + 'A')), 1, 5, '')
    FROM(
    SELECT col = '超領 !:43 EA' UNION ALL
    SELECT col = '超領 !:1849 EA' UNION ALL
    SELECT col = '超領 !:694.96 G'
    )A-- 结果:
    43
    1849
    694.96