我使用一个附加了 IBM DB2 数据库的 SAP 系统。我在 SAP 系统中创建了一个透明表,然后检查了它在数据库级别的外观。事实证明,字符字段 ( CHAR
, DATS
, CUKY
, NUMC
) 的长度是 中指定的长度的三倍SE11
。例如类型的CLIENT
字段MANDT
具有类型VARCHAR(9)
。
由于 SAP 是 Unicode 系统,我可以理解将长度乘以 2。但是乘以3?有人可以向我解释吗?
这种效果不依赖于所使用的 DBMS(我在基于 Oracle 的系统上看到了同样的效果)。这确实是一个 unicode/NUC 问题:在 NUC 系统上,客户端字段是 a VARCHAR2(3)
,在其他相同软件组件的 unicode 系统上,它是 a VARCHAR2(9)
。我只能猜测这是由于使用了一些CESU-8变体。