我有像
这样的查询SELECT 'Insert INTO FOO(ID,NAME) values ('||id|| ',' ||NAME||');' as query
FROM FOO
这只是一个例子,因为我无法提供真实的查询示例。所以,不要注意它是如何工作的,只要相信它的工作原理应该如此。
问题:
如果所选行中存在NULL值,则只在INSERT INTO查询中生成''。所以我在尝试执行插入查询时遇到错误。如何强制SELECT查询返回NULL而不是'?
示例:
我有
Insert INTO FOO(ID,NAME) values (12,);
我想要
Insert INTO FOO(ID,NAME) values (12,NULL);
答案 0 :(得分:2)
尝试使用CASE EXPRESSION
:
SELECT 'Insert INTO FOO(ID,NAME)
values ('||CASE WHEN id = '''' then 'NULL' else id end||','|| CASE WHEN NAME = '''' THEN null else NAME end || ');' as query
FROM FOO
答案 1 :(得分:1)
我猜测NAME
是一个字符串,因此应该用单引号括起来。所以,这可能是您想要的查询:
SELECT 'Insert INTO FOO(ID,NAME) values (' || id || ', ''' || NAME ||''');' as query
FROM FOO;
如果问题是id
,那么您可以执行以下操作:
SELECT 'Insert INTO FOO(ID,NAME) values (' || (CASE WHEN id IS NULL THEN 'NULL' ELSE CAST(id AS VARCHAR2(255)) END) ||
', ''' || NAME ||''');' as query
FROM FOO;