表里存的数据是这样的
19.8
19.99
19.33(全套)
公安高等教育(专科)怎么能把每行带价格的数据取出来??比如19.33 , 全是汉字的不取

解决方案 »

  1.   

    declare @str varchar(20)='19.33(全套)'
    select substring(@str,1,PATINDEX('%[^0-9.]%',@str)-1)
    /*------------
    19.33(1 行受影响)
      

  2.   

    SELECT * FROM 表 WHERE PATINDEX('[^0-9.]', 字段)>0
      

  3.   

    上面搞错了,用这个
    SELECT * FROM 表 WHERE PATINDEX('%[0-9]%',字段)>0
      

  4.   


     List<string> list_str = new List<string> { "19.8","19.99","19.33(全套)","公安高等教育(专科)"};
                list_str = list_str.Where(a => Regex.IsMatch(a, @"\d+(\.\d+)?.*")).Select(a =>Regex.Match(a, @"(\d+(\.\d+)?)").Value).ToList();
                //输出
                /*
                19.8
                19.99
                19.33
                  */