场景描述

Mysql中有varchar类型字段,并且为:123,456 形式,需要对其进行排序,并根据条件筛选出前5条

模拟表数据

表名:table_a

t_id(int)

t_year(int)

t_value(varchar)

1

2019

123,456

Mysql去除字符串中的特殊符号

使用到的函数:REPLACE(str,from_str,to_str)

用法

  • str:需要操作的字段
  • from_str:字段中的特殊符号
  • to_str:需要替换成什么样

这里把t_value值为:123,456中的”,” 去掉,也就是替换成空。 SQL:

SELECT REPLACE(t_value,",","") FROM table_a;

Mysql中varchar转int

使用到的函数: CAST(Filed AS UNSIGNED INTEGER)

用法

  • Filed:为需要转换的字段名

这里需要先把t_value中的”,”去掉然后再转成int SQL:

SELECT CAST(REPLACE(t_value,",","") AS UNSIGNED INTEGER) FROM table_a;

总体实现

需求:对table_a表中的t_year=2019的数据按照t_value字段从大到小排序并且只去前5条 SQL:

SELECT * FROM table_a WHERE t_year = 2019 ORDER BY CAST(REPLACE(t_value,",","") AS UNSIGNED INTEGER) DESC LIMIT 5;