比如某一列的列名称是:“数量”,其内的数据都是“11.2斤”的样式,请问怎么得带11.2而不要斤呢??

解决方案 »

  1.   

    select left(数量,len(数量)-1) from tb
      

  2.   

    SELECT
        LEFT(数量,PATINDEX('%[^0-9.]%',数量)-1) AS 数量
    FROM tb
      

  3.   

    declare @t table(col1 varchar(10), col2 varchar(20))
    insert @t select 1 ,   '11.2斤' 
    insert @t select 2 ,   '12.22千克'  select col1,left(col2,patindex('%[吖-做]%',col2)-1) col2 from @tcol1       col2
    ---------- --------------------
    1          11.2
    2          12.22(2 行受影响)
      

  4.   

    declare @t table(col1 varchar(10), col2 varchar(20))
    insert @t select 1 ,   '11.2斤' 
    insert @t select 2 ,   '12.22千克'  select col1,left(col2,patindex('%[^0-9.]%',col2)-1) col2 from @tcol1       col2
    ---------- --------------------
    1          11.2
    2          12.22(2 行受影响)比较支持小梁这种方法
      

  5.   


    declare @t varchar(20)
    set @t='11.2斤'
    select left(@t,patindex('%[^0-9.]%',@t)-1) as 数量--写成函数
    create function [dbo].[getnumberfromchar]
    (
       @mysql_one nvarchar(200)
    )
    returns varchar(200)
    begin
    declare @mysql_two varchar(200)
    select @mysql_two=
    substring(@mysql_one,patindex('%[0-9.]%',@mysql_one),patindex('%[^0-9.]%',substring(@mysql_one,patindex('%[0-9.]%',@mysql_one),
        len(@mysql_one)-patindex('%[0-9.]%',@mysql_one)+1))-1)
    return @mysql_two;
    end--测试函数
    select dbo.[getnumberfromchar]('11.2千克')
    select dbo.[getnumberfromchar]('11.2斤')