Oracle SQL, 在select语句中获取长度更大的varchar2列
Oracle SQL, get varchar2 column with greater length in select statement
我在 table 中有一个 varchar2(8) 列,我想在 select 语句 中将其转换为 varchar2(100) (即我不想在之后调用“alter table”)。*
可能吗?有没有像“to_varchar2(x, 100)”这样的函数?
(*) 原因是我需要在“模型”语句中使用该列,其中会有更长的附加标识符。我不想创建中间 table 并使用“alter table”来更改 varchar2 长度。
示例:
select date, mystringvariable r, somenumber v from MyTable
model
unique single reference
return updated rows
partition by(date) dimension by(r) measures(v)
rules upsert automatic order (
v['too_long_identifier'] = v['X1']
);
Error at line 5:
ORA-12899: value too large for column ??? (actual: 19, maximum: 8)
partition by(date) dimension by(r) measures(v)
^
不确定您需要在查询的哪个位置执行此操作(我没有要测试的数据),但是如果 str
是数据类型 varchar2(8)
的任何表达式并且您需要改写为varchar2(100)
,可以使用cast
函数:
.... cast(str as varchar2(100)) ....
我在 table 中有一个 varchar2(8) 列,我想在 select 语句 中将其转换为 varchar2(100) (即我不想在之后调用“alter table”)。* 可能吗?有没有像“to_varchar2(x, 100)”这样的函数?
(*) 原因是我需要在“模型”语句中使用该列,其中会有更长的附加标识符。我不想创建中间 table 并使用“alter table”来更改 varchar2 长度。 示例:
select date, mystringvariable r, somenumber v from MyTable
model
unique single reference
return updated rows
partition by(date) dimension by(r) measures(v)
rules upsert automatic order (
v['too_long_identifier'] = v['X1']
);
Error at line 5:
ORA-12899: value too large for column ??? (actual: 19, maximum: 8)
partition by(date) dimension by(r) measures(v)
^
不确定您需要在查询的哪个位置执行此操作(我没有要测试的数据),但是如果 str
是数据类型 varchar2(8)
的任何表达式并且您需要改写为varchar2(100)
,可以使用cast
函数:
.... cast(str as varchar2(100)) ....