1

처음에는 제목이 유감 스럽지만 명확하지는 않지만 더 좋은 것을 찾을 수는 없습니다. 크리스탈 리포트가 있습니다. 이 보고서는 명령 (SQL 쿼리)을 사용하여 Oracle 데이터베이스에서 데이터를 가져 오지 않습니다. 이전 개발자는 테이블간에 링크를 사용하여 쿼리가 동적으로 생성되었습니다.열에 null 값이있는 행이 문자열과 비교할 때 표시되지 않음

생성 된 SQL 쿼리를 보려면 "Show Sql Query"메뉴를 사용했습니다. SQL 쿼리를 생성 한 이유는 일부 레코드가 결과에 나타나지 않았기 때문에 SQL Developer에서 쿼리를 실행하려고했기 때문에 문제가 발견되어 매우 이상하다고 믿었 기 때문입니다. WHERE 절에이 필터가 있습니다 (TableX.FieldY <> 'blabla'). 일반적으로 그 열에 NULL을 포함하는 행을 포함해야하지만, 그렇지 않습니다!

결과적으로 oracle은 해당 열에 null 값이있는 행을 표시하지 않습니다! null은 'blablabla'와 다르므로 그 열의 null 값을 가진 레코드가 표시되지 않는 이유는 무엇입니까? 저 좀 도와 주 시겠어요? 또한 솔루션에서 쿼리의 내용을 수정하는 경우에도 Crystal 보고서에서 자동 생성되므로 쿼리를 수정할 수 없습니다. 소중한 도움에 감사드립니다.

Walloud

답변

1

NULL은 동일하지 아무것도 않습니다. NULL은 자체 비교, IS NULL 또는 IS NOT NULL을가집니다.

TableX.FieldY <> 'blabla' 
OR TableX.FieldY IS NULL 
+1

먼저 null 확인이 수행되어야하며, 그렇지 않으면 검사가 실패합니다. 그럼,'isnull ({table.field}) 또는 {table.field} <> 'blablah'' – Ryan

+0

그게 Crytal이 구문 문제를보고 한거야? SQL 로직 관점에서 보면 중요하지 않습니다. –

+0

예, CR에 null이 발생하면 명령문 평가가 중단됩니다. – Ryan