select CASE
WHEN value not REGEXP '^-?[0-9]+([.][0-9]+)?$' THEN CAST(value AS CHAR)
WHEN value = FLOOR(value) THEN CAST(FLOOR(value) AS CHAR)
ELSE TRIM(TRAILING '0' FROM TRIM(TRAILING '.' FROM CAST(value AS CHAR)))
END AS clean_value
from (select 10.100 value
union
select 10.00 value
union
select 10 value
union
select '10.11' value
union
select 'abcd' value
union
select 10.110101 value) m
直接贴代码,代码逻辑就是
1.非数值:直接转字符串
2.带小数:转数值在转字符串
3.无小数:砍掉最后的0