我在“ ”内有查询:
X:=NULL;
v_sql:='insert into users(id) values(NVL('||X||',NULL))';
我得到的结果是:
insert into users(id) values(NVL(,NULL))
为什么会跳过空值? 以及如何解决这个问题
实际上,它并没有被跳过,而是导致串联失败而无提示。
X 为 NULL。
当您执行“||”时X ||',X 的 NULL 值不被视为字符串,而是被视为缺失值。
与 NULL ('|| NULL ||') 的字符串连接会导致整个连接表达式变为 NULL。
因此,v_sql 赋值的计算结果为 NULL,并且您会在结果中看到 NVL(,NULL)
如果您希望当 X 为 NULL 时,文字文本 NULL 出现在 SQL 查询中,则需要显式处理此替换。例如:
v_sql := '插入用户(id)值(NVL(' || CASE WHEN X IS NULL THEN 'NULL' ELSE X END || ', NULL))';