如何根据值跳过列输出?

时间:2014-10-21 13:08:53

标签: sql oracle

我正在使用以下脚本从Oracle生成C#中的对象,它可以正常工作。

select 'yield return new Question { QuestionID = '||Q.questionid||', Qcode = "'||Q.Qcode||'", QuestionDescription = "'||Q.questiondescription||'", QuestionText = "'||Q.questiontext||'", QuestionCategoryId = '||Q.questioncategoryid||', QuestionTypeID = '||Q.QuestionTypeID||', IsThunderheadOnly = '|| case q.isthunderheadonly when 0 then 'false' else 'true' end ||', DisplayOrder = '||q.displayorder||' };'
  from QUESTION q
where 
questioncategoryid = 7

然而,我一次又一次遇到无法||添加NULL值列的问题,此时解决方案是手动添加这些属性,这在选择最多20条记录时是可以的。
 现在我遇到了一个必须选择数百条记录的情况,手动添加它们需要花费大量时间。

如果表中的列是MaxValue,如果列中的列是NOT NULL,则如何修改脚本以添加(示例){{1}}属性?

1 个答案:

答案 0 :(得分:2)

您可以使用case ... when ... else跳过它,就像您自己想出的那样:

... ||case when A.NEXTQUESTIONID is not null then 'NextQuestionID = '||A.NEXTQUESTIONID||',' else '' end || ...

您还可以使用nvl2功能获得更短的解决方案:

... || nvl2(A.NEXTQUESTIONID, 'NextQuestionID = '||A.NEXTQUESTIONID||',', '') || ...