优雅的百分比解析 - MySQL

时间:2017-05-12 21:28:47

标签: mysql sql database

我继承了一个将税率存储为字符串的数据库。它们有以下几种形式:

  • 号码:07
  • 十进制:6.5
  • Null:null(应解释为零)
  • 字符串:6.5%
  • 此事:6,5%6,5

我需要一种简洁的方法来生成十进制mid-sql语句:

SELECT tax_rate FROM table

使用MySQL函数的一些结合,我想将所有格式的tax_rate转换为小数。

  • 6.5%变为.065
  • null变为0
  • 6,5变为.065

有什么建议吗?

要明确,我可以通过并清理数据,但我无法控制生成这些条目的软件,以及将来使用创建的条目上面讨论的格式。这将需要重复消毒数据。我宁愿通过聪明的(或者我认为错综复杂的)SQL语句来处理它。

1 个答案:

答案 0 :(得分:1)

这是一种非常简单的方法。 。 。有点:

select coalesce((replace(taxrate, ',', '.') + 0) / 100, 0)

这涵盖了您问题中的示例。

这是使用字符串的隐式转换。将所有前导数字(和小数位)转换为数字。 + 0并非绝对必要,但这是我用于隐式转换的惯例。