在几乎任何普通的编程语言中,可以使用类似于此的强制转换将一个整数/短/字节转换为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中完成?
答案 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)