如何找到字符列的MAX()值?

zar*_*jar 2 sql db2 ibm-midrange

我们有遗留表,其中复合键的一部分列是手动填充值:

code
------
'001'    
'002'    
'099'
Run Code Online (Sandbox Code Playgroud)

等等

现在,我们有功能请求,其中我们必须知道MAX(代码)以便为用户提供下一个可能的值,在下面的值上面的示例情况形式是'100'.

我们试图对此进行试验,但我们仍然无法找到任何合理的解释DB2引擎如何计算它

MAX('001','099','576')是'576'

MAX('099','99','www')为'99',依此类推.

任何帮助或建议将不胜感激!

Jan*_*e T 7

你已经得到了获得最大数值的答案,但回答了关于'www','099','99'的其他部分.

AS/400使用EBCDIC来存储值,这在几个方面与ASCII不同,最重要的是Alpha字符在数字之前,这与Ascii相反.

因此,在您的Max()上,您的3个字符串将被排序,并使用最高的EBCDIC值

  • '万维网'
  • '099'
  • '99'

你可以看到你的'99'字符串真的是'99'所以它高于带有前导零的字符串.