0

在一个程序中,我使用了函数 RPAD() 来格式化来自 DB2 db 的数据。在一种情况下,该值是 Ãmber。以下功能:

RPAD('Ãmber',10,' ')

仅给出 9 个字符。'Ã' 的 ASCII 值是 195。我无法理解这种行为的原因。有人可以分享他们的经验。谢谢

4

1 回答 1

1

默认情况下,DB2 将 Ã 的长度视为 2,可能是因为它计算的是字节而不是字符。

values(LENGTH('Ãmber'))
 6

您可以为LENGTH和许多其他功能覆盖它

values(LENGTH('Ãmber', CODEUNITS16))
 5

不幸的是,RPAD不采用这样的参数。我猜这可能是因为添加了该功能是为了与 Oracle 兼容,而不是基于其自身的优点。

您可以将自己的 RPAD 函数编写为存储过程或 UDF,或者如果这是您唯一需要它的地方,则只需使用 CASE 语句来处理它。

于 2013-01-08T19:49:37.400 回答