【发布时间】:2019-08-29 12:37:26
【问题描述】:
我在 Oracle DB 中有一个表,其中列 CHAR(11)。
我已将值 'abcd ' 插入其中。 (注意abcd后面有一个空格)
当我执行 LENGTH(column) 时 - 它返回 11 而不是 5。
如何获取数据大小而不是列大小?
之所以需要它,是因为我正在从 table1 读取值具有 CHAR 数据类型并将数据插入到 table2 具有 VARCHAR 数据类型。
所以在这种情况下,它会将 'abcd '(abcd 后跟 7 个空格) 添加到 table2 而不是 'abcd' (有单个空格)。
如何避免这种情况?如果我可以从 CHAR 列中获取数据大小,那么我可以做到。
请告诉我如何实现?
【问题讨论】:
-
你能添加空格值并期望它们算作长度吗?
-
JFYI:根据 Tom Kyte 的说法,没有理由使用
CHAR而不是VARCHAR2。在这里阅读:asktom.oracle.com/pls/asktom/…, -
@ThorstenKettner
TRIM使用默认选项将摆脱前导空格,并且大多数时候不会给出预期的结果。您要么想要RTRIM,要么使用TRIM并指定TRIM( TRAILING ' ' FROM column_name )。 -
@MT0:是的,抱歉,当我阅读您的回答时,我已经删除了我在
TRIM上的误导性评论 :-)