一个字段里有些内容是数字和中文一起的。。例如   30万元。。50万。。48。。但也有一些只有中文的。。例如   市场价。。现在是否应该用一条SQL语句把那个字段里的数字UPDATE到一个新的字段里  然后比较大小排序。。还是说。。有直接的SQL条件可以判断这种数字和中文混合的排序呢。。请教了。。谢谢。。

解决方案 »

  1.   

    没有#2的情况,这样就可以了:order by convert(money, left(colname, isnull(nullif(patindex('%[^0-9.]%',colname)-1,-1),len(colname))))
      

  2.   


    order by convert(money, replace(replace(colname, '万', ''), '元', ''))
      

  3.   

    no problemmoney 4位小数够用否
      

  4.   


    嗯。但这样查会不会影响速度。
    能不能这样做。就是在那个表里加一个新的字段。然后把中文去掉UPDATE到新字段里呢。因为现在录入表的都是正常的了。只是以前的数据量大。想改过来。
    如果这样做。全中文的怎么照搬。。
      

  5.   


    不用单位了。就只保留数据。SQL语句怎么写呢。感谢。
    这样么:update `tb` set price2 = replace(replace(price, '万', ''), '元', '')
      

  6.   

    没错!
    REPLACE(str,from_str,to_str)
    返回字符串str,其字符串from_str 的所有出现由字符串to_str 代替。
    mysql> select REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'
    该函数对多字节是可靠的。