MySQL修剪多个字符串0?

时间:2015-08-03 00:30:14

标签: mysql trim

所以我有一个字符串列,格式如下:'123.123.123.123.123'。 我需要将字符串剪切为前两个数字,如下所示:'123.123'这样我可以GROUP BY剪切字符串以获得所需的结果。

我可以使用SUBSTRING_INDEX(Version, '.', 2)轻松完成此操作,但是当第二个数字部分有多个0时会出现问题,因此在查询中给我重复的条目。

e.g。 (10.00, 10.0)10.404, 10.4040等。

有没有办法修剪字符串末尾的所有不需要的零?

注意:在这种情况下,我只能使用直接的MySQL或函数。

修改
我可以通过替换' .0'的第一个实例来获得所需的结果,修剪额外的零,然后替换' .0'回来

REPLACE(TRIM(TRAILING '0' FROM REPLACE(SUBSTRING_INDEX(Version, '.', 2), '.0', '^a')), '^a', '.0')

这可能不是表现最好的选择 - 因此我会在接受我自己之前等待其他人。

1 个答案:

答案 0 :(得分:0)

如果您只使用前两个组件,则将值转换为数字,例如:

cast(substring_index(version, '.', 2) + 0 as decimal(10, 4))

这将为具有相同数值的所有内容提供相同的表示。

编辑:

如果要从字符串的 end 中删除尾随零,可以使用此技巧:

 replace(rtrim(replace(substring_index(version, '.', 2), '0', ' ')), ' ', '0')

这会用空格替换零,然后使用rtrim()并将它们转换回零。

相关问题