[Amazon](500310)无效的操作:“ INVC_RLS_LCTN”列的类型为整数,但表达式的类型为字符变化;

时间:2019-02-21 14:21:22

标签: sql amazon-redshift netezza

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

  

Amazon无效操作:“ 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?

1 个答案:

答案 0 :(得分:0)

数据库正在猜测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