【发布时间】:2012-03-15 00:29:52
【问题描述】:
在几乎任何普通的编程语言中,都可以使用类似于此的转换轻松地将整数/短/字节转换为字符
char alpha = (char)123;
我正在尝试在 Oracle 数据库中执行此操作。我有 CHAR(1 BYTE) 类型的列,我希望能够在其中存储 NUMBER 值(其中不大于 30 左右)。 CAST 函数不允许我这样做。
rank := 10;
CAST(rank as CHAR(1))
其中 rank 是一个 NUMBER 变量。我收到一个错误:
Value from cast operand is larger than cast target size.
这是如何在 Oracle PL/SQL 中完成的?
【问题讨论】:
-
您想将两位数转换为一个字符的 CHAR。该错误会告诉您您需要知道的一切。
-
一个字符是1个字节,十进制数10可以用一个字节(00001010)表示。我使用的是我作为程序员习惯的“cast”这个词的定义,它可能与 SQL 的定义不同。
-
"Oracle 以 100 为基数存储一个数字,每个字节可以存储 2 位数字,一个字节总是为指数保留"(来自:dbasupport.com/forums/showthread.php?t=17375)。您将需要一个更大的列。
-
@Ollie - 我不知道它是这样工作的,我以为是字符长度。感谢您指出这一点!
-
我将你们俩引导到我在北极回答中的评论。我不关心存储具有任何意义的人类可读字符。我正在尝试将一个单字节值存储在一个单字节列中,该列恰好期望一个字符而不是一个数字。
标签: oracle casting plsql char int