【问题标题】:[Amazon](500310) Invalid operation: column "INVC_RLS_LCTN " is of type integer but expression is of type character varying;[Amazon](500310) 无效操作:列“INVC_RLS_LCTN”是整数类型,但表达式是字符变化类型;
【发布时间】:2019-02-21 14:21:21
【问题描述】:

我正在尝试在 RedShift 数据库中的表中插入值。但是当我在整数列中插入 NULL 值时,出现以下错误:

亚马逊无效操作:列“INVC_RLS_LCTN”是整数类型 但表达式的类型是字符变化的;

这是架构:

CREATE TABLE DM_TX_LINE_FCT
(
SRRGT_ID BIGINT NOT NULL,
IGT_RSRVTN_ID CHARACTER VARYING(40),
INVC_RLS_LCTN INTEGER,
)
distkey(TX_SRRGT_KEY)
SORTKEY(LCTN_ID, PRCSSNG_DT_KEY);

我是这样插入表格的

 ...
 ...                     
     PT.CASHIER_NBR,
     PT.MMBRSHP_CARD_ID,
     MMBR.MMBRSHP_CARD_SRRGT_ID,
     NULL as IGT_RSRVTN_ID,
     NULL as INVC_RLS_LCTN,  
 ... 
 ...  

谁能告诉我,为什么我不能将 NULL 存储为整数值?

【问题讨论】:

  • 如果乔的答案对你有用,那就太好了(即使用 NULL::integer ) - 否则你可以扩展你的问题以显示你的完整示例代码。
  • 是的,它奏效了。谢谢
  • 你能帮我解决这个问题吗stackoverflow.com/questions/54720771/…

标签: sql amazon-redshift netezza


【解决方案1】:

数据库猜测NULL 值的类型为VARCHAR。可能是因为查询中发生了其他事情。

将其显式转换为 INTEGER 以允许插入。

CREATE TEMP TABLE "nulltest" ("nulltest" INT);
    --CREATE TABLE

INSERT INTO "nulltest" SELECT CAST(NULL AS VARCHAR(10));
    --ERROR:  column "nulltest" is of type integer but expression is of type character varying
    --HINT:  You will need to rewrite or cast the expression.

INSERT INTO "nulltest" SELECT CAST(NULL AS INTEGER);
    --INSERT 0 1

【讨论】:

猜你喜欢
  • 2015-05-30
  • 2020-12-28
  • 2019-11-08
  • 2018-10-09
  • 2015-04-22
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
相关资源
最近更新 更多