在查询

时间:2016-02-01 14:50:32

标签: sql oracle

我正在尝试为c.GUIDELINE_TEXT显示NULL值和NOT NULL值。我已经看过一些例子,但我不知道该把它放在哪里。当我使用这段代码时:

WHERE c.GUIDELINE_TEXT is NULL 

我没有收到任何值。我没有尝试过COALESCE,因为我不太确定它是什么或将它放在我的代码中。我知道GUIDELINE_TEXT确实有空值。我知道我可能会犯一些新手的错误,所以如果有人能指出我正确的方向会很好。谢谢。

SELECT
    a.ORDER_NO,
    a.RELEASE_NO,
    a.SEQUENCE_NO,
    b.C_OPERATION_SEQUENCE as OP_SEQ,
    b.OPERATION_NO,
    b.OP_ID,
    c.GUIDELINE_TEXT
FROM
    ifsapp.SHOP_ORD a,
    ifsapp.SHOP_ORDER_OPERATION b,
    ifsapp.SHOP_ORD_WORK_GUIDE c
WHERE
    a.ORDER_NO = b.ORDER_NO 
    AND b.ORDER_NO = c.ORDER_NO
    AND a.RELEASE_NO = b.RELEASE_NO
    AND b.RELEASE_NO = c.RELEASE_NO
    AND a.SEQUENCE_NO=b.SEQUENCE_NO
    AND b.SEQUENCE_NO = c.SEQUENCE_NO
    AND b.OPERATION_NO = c.OPERATION_NO
    AND a.ORDER_NO = ('&Ord')
    AND a.RELEASE_NO = ('&Rel')
    AND a.SEQUENCE_NO = ('&Seq')

编辑:数据的一个例子。

Example

预期的结果是它也会从GUIDELINE_TEXT的空白列中提取数据,并希望得到它将拉出所有order_no而不是只有那些在GUIDELINE_TEXT列中有文本的行。

1 个答案:

答案 0 :(得分:1)

如果没有看到样本数据,则应显示存在空值

SELECT
a.ORDER_NO,
a.RELEASE_NO,
a.SEQUENCE_NO,
b.C_OPERATION_SEQUENCE as OP_SEQ,
b.OPERATION_NO,
b.OP_ID,
NVL(c.GUIDELINE_TEXT,'Nothing to see, move along') AS GUIDELINE_TEXT

the documentation“NVL允许您使用字符串替换null(作为空白返回)”。

COALESCE从列表here返回第一个非空值。如果您有多个可能或可能不为null的值,则Coalesce可能很难使用。如果您的可能值集可以按非空值的可能性排列,或者您确定表达式中的所有值都相同,则非常有用。