【问题标题】:Oracle SQL, get varchar2 column with greater length in select statementOracle SQL,在select语句中获取长度更大的varchar2列
【发布时间】:2021-02-28 23:14:30
【问题描述】:

我在表中有一个 varchar2(8) 列,我想在 select 语句中将它转换为 varchar2(100)(即我不想调用“alter表”之后)。* 可能吗?有没有像“to_varchar2(x, 100)”这样的函数?

(*) 原因是我需要在“模型”语句中使用该列,其中会有更长的附加标识符。我不想创建一个中间表并使用“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)
                                          ^

【问题讨论】:

    标签: sql oracle string-length varchar2


    【解决方案1】:

    不确定您需要在查询的哪个位置执行此操作(我没有要测试的数据),但如果 str 是数据类型为 varchar2(8) 的任何表达式,并且您需要将其重铸为 varchar2(100) ,可以使用cast函数:

     .... cast(str as varchar2(100)) ....
    

    【讨论】:

    • 正是我需要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多