我正在尝试将值插入另一个表的表中。用'Undefined'替换任何可能的空值,并且我创建了一个序列来填充我的一个列。我在第二行继续收到错误。
INSERT INTO PRODUCT_DIM
SELECT PRODUCT_SEQ.NEXTVAL AS PRODUCT_KEY,
NVL((PRODUCTID, PRODUCTDESCRIPTION, PRODUCTLINEID),'Undefined')
FROM PRODUCT_T;
答案 0 :(得分:1)
NVL仅需要2个参数(最大值)。看看使用COALESCE,即。
COALESCE(param1, param2, param3, .... )
答案 1 :(得分:1)
您可以使用Connor演示的COALESCE
函数。
使用NVL
,您需要嵌套函数,如下所示:
INSERT INTO PRODUCT_DIM
SELECT PRODUCT_SEQ.NEXTVAL AS PRODUCT_KEY,
NVL(PRODUCTID, NVL(PRODUCTDESCRIPTION, NVL(PRODUCTLINEID, 'Undefined')))
FROM PRODUCT_T;
答案 2 :(得分:0)
我会说,实际上,你插入了4个不同的列,因此你需要4个独立的NVL,但很难猜测(这就是我们正在做的 - 猜测)。
如果您指定了应在PRODUCT_DIM表中填充的列列表,则会更容易回答。
INSERT INTO PRODUCT_DIM
(product_key,
productid,
productdescription,
productlineid
)
SELECT PRODUCT_SEQ.NEXTVAL,
NVL(PRODUCTID , 'Undefined'),
NVL(PRODUCTDESCRIPTION, 'Undefined'),
NVL(PRODUCTLINEID , 'Undefined')
FROM PRODUCT_T;