我想在值NULL
我尝试使用小柱长并且工作正常:
INSERT INTO ABCTABLE (COLUMN1)
VALUES ('DECODE(MDSE_CD,NULL,''000'',LPAD(TO_NUMBER(MDSE_CD,''3'','' ''))');
但是如何执行大约400列长度的第二个查询:
INSERT INTO ABCTABLE (COLUMN1)
VALUES ('DECODE(MDSE_CD,NULL,''see notes below'',LPAD(TO_NUMBER(MDSE_CD,''400'','' ''))');
注意:当列为NULL
答案 0 :(得分:2)
CREATE TABLE my_test( val VARCHAR2(500));
INSERT INTO my_test
SELECT TO_CHAR(NVL(TO_CHAR(val), rpad(NVL(val,'0'), 400, '0')))
FROM
(WITH t(val) AS
(SELECT '1' FROM dual
UNION
SELECT NULL FROM dual
)
SELECT * FROM t
);
SELECT * FROM my_test;
val
--
1
00000
答案 1 :(得分:1)
由于DECODE
我假设Oracle ......
在Oracle中获得400个零:
LPAD('0', 400, '0')
第三个参数是要填充的内容;在这种情况下为零。
在Oracle中获得400个空格:
LPAD(' ', 400)
由于字符串都是相同的字符,您还可以使用RPAD
。