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

问题描述 投票:0回答:1

我正在尝试在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存储在整数值中?

sql amazon-redshift netezza
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.