我们有遗留表,其中复合键的列部分之一手动填充了值:
code
------
'001'
'002'
'099'
etc.
现在,我们有一个功能请求,其中我们必须知道 MAX(code) 才能为用户提供下一个可能的值,在示例情况下,上面的下一个值是“100”。
我们尝试对此进行实验,但仍然找不到任何合理的解释 DB2 引擎如何计算该值
MAX('001', '099', '576') 为 '576'
MAX('099', '99', 'www') 是 '99' 等等。
任何帮助或建议将不胜感激!
您已经有了获取最大数值的答案,但要回答有关“www”、“099”、“99”的另一部分。
AS/400 使用EBCDIC http://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code存储值,这在几个方面与 ASCII 不同,对于您的目的来说最重要的是 Alpha 字符位于数字之前,这与 Ascii 相反。
因此,在 Max() 上,您的 3 个字符串将被排序,并使用最高的 EBCDIC 值
正如您所看到的,您的“99”字符串实际上是“99”,因此它比带有前导零的字符串更高。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)