如何将NUMBER值转换为Oracle中的单个CHAR?

时间:2012-02-24 14:51:47

标签: oracle casting plsql char int

在几乎任何普通的编程语言中,可以使用类似于此的强制转换将一个整数/短/字节转换为char

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中完成?

3 个答案:

答案 0 :(得分:4)

根据我对@ northpole答案的评论......

最接近您想要的可能不完全正确,但CHR函数会将数字转换为等效的ascii。
alpha := chr(113);会将字符“q”放入alpha变量中,从而将数字“113”存储为单个字节。

答案 1 :(得分:1)

你有几个选择。您可以使用TO_CHAR并执行以下操作:

TO_CHAR(rank,'99')

或者使用CAST功能并通过提供更大的CHAR来修复您的尝试:

CAST(rank as CHAR(2))

原因就像奥利在评论中描述的那样。

答案 2 :(得分:0)

你可以试试这个:

SUBSTR(CAST(rank as CHAR(2)), 2, 1)