我们将Oracle作为源,将HANA 1.0 sps12作为目标。我们正在通过实时复制将Oracle通过Informatica CDC镜像到HANA。在Oracle中,对于许多列,我们的数据类型为CHAR,即固定长度数据类型。由于HANA官方不支持CHAR数据类型,因此我们使用的是NVARCHAR数据类型,而不是相同的数据类型。我们面临的问题是-由于Oracle CHAR数据类型的长度固定,并且每当实际字符串的长度小于数据类型的长度时都附加空格,因此此类列的目标HANA数据库中会有很多额外的空间。
例如如果col1列的数据类型
CHAR(5)
,其值为'A'
,在HANA中被复制为'A '
,即'A'
,后面附加四个空格,在查询和数据解释中引起很多问题
是否可以在HANA中实现类似CHAR的数据类型?
答案 0 :(得分:0)
我不知道HANA,这不是评论,而是答案,但是我选择将其放在此处,因为有些代码我希望您看到。
这是一个表,其列的数据类型为 DOMDisplay.prototype.scrollPlayerIntoView = function(state) {
let width = this.dom.clientWidth;
let height = this.dom.clientHeight;
let margin = width / 3;
// The viewport
let left = this.dom.scrollLeft, right = left + width;
let top = this.dom.scrollTop, bottom = top + height;
let player = state.player;
let center = player.pos.plus(player.size.times(0.5))
.times(scale);
if (center.x < left + margin) { // <---i stuck from here cant understand the logic
this.dom.scrollLeft = center.x - margin;
} else if (center.x > right - margin) {
this.dom.scrollLeft = center.x + margin - width;
}
if (center.y < top + margin) {
this.dom.scrollTop = center.y - margin;
} else if (center.y > bottom - margin) {
this.dom.scrollTop = center.y + margin - height;
}
};
:
CHAR
列的长度为10(您已经知道):
SQL> create table test (col char(10));
Table created.
SQL> insert into test values ('abc');
1 row created.
但是,如果您 TRIM ,您会得到一个更好的结果,那就是您想要的:
SQL> select length(col) from test;
LENGTH(COL)
-----------
10
因此:如果您可以说服镜像过程以将SQL> select length( TRIM (col)) from test;
LENGTH(TRIM(COL))
-----------------
3
SQL>
函数应用于这些列,则可能会得到所需的内容。
[在看到Lars的评论并重新阅读问题后进行编辑]
正确;这个问题似乎与我最初理解的相反。如果那是重点,也许TRIM
会有所帮助。这是一个示例:
RPAD
答案 1 :(得分:0)