oracle 字符串排序引起的BUG

alexlee 2024-4-16 170 4/16

最近项目上,因为一个字符串排序的问题,导致了系统内部的一些BUG出现,这也让我很是头痛,毕竟花太多时间在处理这些BUG上边。

我们就没有更多的时间跟精力支开发跟研发更的项目,为此,一发现这些BUG, 我们采取的态度就是快速定位BUG问题,解决项目上的问题。

那接下来,我们就要简单认识一下,字符串取最大值的概念,如下:

如果字符串  包含数字,那么值为该字符串在 10 进制下的所表示的数字。

也正是因为字符串取最大值的特殊性,导致了项目上的BUG,如下图,所示:

oracle 字符串排序引起的BUG oracle 字符串排序引起的BUG

我们可以看到上边的最大值是10,但是使用max出来的,确是9,就是问题所在,这也就意味着,接下来能增长的就是到10,也就是说

会一直重复10这个序号。

假如序号一直是重复的情况下,系统就无法正常识别新增的记录,这也导致了,系统无法正常运转。

那接下来,我们就要通过语法的改变,来解决这个问题 如下所示:

select max(to_number(periodtype)) from table_var

使用该语句,我们便可以正常的得到最大是10的,也就是说,我们可以正常递增序号上去。

可能这里会有人疑问,为什么不用 整型的类型呢,这有时候,项目设计上就是这样,能不动就不动,避免发生更多问题。

为此,我们这里就使用了这种 to_number 的方法来修正这个错误。

以上是自己的做为资深开发的一些个人经历,把这些经验分享给大家,希望以后大家在从事开发中,可以避免不必要的麻烦,跟浪费时间精力。

要是大家喜欢我的文章的话,可以在文章下留言或是联系我,共同进步,共同探讨开发的一些案例,促进彼此间的交流,分享一些日常的开发趣事。

- THE END -
最后修改:2024年4月16日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论