sql复合查询与null对查询结果影响分析
expert_details中检索出修改人modifier(类型 varchar2(20),可为空)为空的那些记录,因为该字段的类型为varchar2(20),我使用的sql语句为
复制代码 代码如下:
* from expert_details twhere t.modifier = ''
没有检索出一条记录,而这与存储在该表中的记录是不相符的。后来想到即便是空字符型存储在中也应该是null而不是''。
然后我使用下列sql 语句,仍然没有检索出一条记录。
复制代码 代码如下:
select * from expert_details t
where t.modifier = null
最后我想到了sql中的null 值测试。使用如下语句,终于检索出了想要的结果。
复制代码 代码如下:
select * from expert_details t
where t.modifier is null
在sql语句中,where 子句:where t.modifier = null ,这里不可以使用null关键字,因为它不是一个真正的值,它仅仅是一个符号,因为它的值是未知的。当t.modifier本身就是null时,即where子句为:where null= null ,当等号两边的值都是未知的时候,结果是true还是false,sql不能给出一个明确的结果,所以查询出的结果也为null。
因此必须明确使用null值测试即 字段 is null 或者其否定形式 字段 is not null 来检测null值。
以下是sql中and,or,not的真值表。
表1 and的真值表
true |
false |
null |
|
true |
true |
false |
null |
false |
false |
false |
false |
null |
null |
false |
null |
表2 or的真值表
true |
false |
null |
|
true |
true |
true |
true |
false |
true |
false |
null |
null |
true |
null |
null |
表3 not的真值表
true |
false |
null |
false |
true |
null |
当两个以上的查询条件与and、or、not组合时,not的优先级最高,其次是and,最后是or。为了避免歧义和确保可移植性最好使用括号。
a between b and c 等价于 (a>=b) and (a
同样,a in(b,c,d) 等价于 (a=b)or(a=c)or(a=d), 根据真值表,只要这三个表达式中有一个为null,结果返回肯定是null。
因此,between子句和in子句并不增加sql语句的表达能力。
sql 中有null 值测试,即:字段 is (not) null ,但它的返回结果只有两种情况:true或者false。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









C 언어에서 null과 NULL의 차이점은 다음과 같습니다. null은 C 언어의 매크로 정의로, 일반적으로 포인터 변수를 초기화하거나 조건문에서 포인터가 null인지 확인하는 데 사용할 수 있는 null 포인터를 나타내는 데 사용됩니다. NULL은 C 언어의 매크로 정의입니다. 일반적으로 널 포인터, 널 포인터 배열 또는 널 구조 포인터를 나타내는 데 사용되는 널 값을 나타내는 데 사용되는 미리 정의된 상수입니다.

JavaScript에서 undefound와 null은 모두 "아무것도 없음"이라는 개념을 나타냅니다. 1. undefine은 초기화되지 않은 변수 또는 존재하지 않는 속성을 나타냅니다. 변수가 선언되었지만 값이 할당되지 않은 경우 변수의 값은 undefine입니다. 개체에 존재하지 않는 속성에 액세스하는 경우 반환된 값도 정의되지 않습니다. 2. null은 빈 개체 참조를 나타내는 경우가 있으며, 개체 참조가 차지하는 메모리를 해제하기 위해 null로 설정할 수 있습니다.

null과 정의되지 않음의 차이점은 다음과 같습니다. 1. 의미론적 의미, 3. 다른 값과의 비교, 5. 함수 매개변수와의 관계, 7. 성능 고려 사항, . JSON 직렬화의 성능 9. 유형과의 관계. 자세한 소개: 1. 의미론적 의미인 null은 일반적으로 이 변수에 유효한 개체 값이 없음을 의미하는 반면, 정의되지 않음은 일반적으로 변수에 값이 할당되지 않았거나 개체에 이 속성이 없음을 의미합니다. , 등.

Null과 정의되지 않음은 모두 값이 부족하거나 정의되지 않은 상태를 나타냅니다. 사용 시나리오에 따라 Null 또는 정의되지 않음을 사용하도록 선택하는 몇 가지 기본 원칙이 있습니다. 1. 변수가 비어 있거나 유효하지 않음을 명확하게 표시해야 하는 경우 null을 사용할 수 있습니다. 2. 변수가 선언되었지만 아직 값이 할당되지 않은 경우 기본적으로 정의되지 않은 상태로 설정됩니다. 3. 변수가 비어 있는지 또는 정의되지 않았는지 확인해야 하는 경우 완전 항등 연산자 "=를 사용합니다. ==" 변수가 null인지 정의되지 않았는지 확인합니다. .

Laravel 컬렉션의 Where 메소드에 대한 실용 가이드 Laravel 프레임워크를 개발하는 동안 컬렉션은 데이터를 조작하기 위한 풍부한 메소드를 제공하는 매우 유용한 데이터 구조입니다. 그 중 Where 방식은 특정 조건에 따라 컬렉션의 요소를 필터링할 수 있는 일반적으로 사용되는 필터링 방식이다. 이 글에서는 Laravel 컬렉션에서 Where 메소드의 사용법을 소개하고 특정 코드 예제를 통해 사용법을 보여줍니다. 1. Where 메소드의 기본 사용법

Laravel 컬렉션에서 Where 메소드를 사용하는 방법 Laravel은 개발자가 애플리케이션을 신속하게 구축할 수 있도록 다양한 기능과 도구를 제공하는 인기 있는 PHP 프레임워크입니다. 그 중 컬렉션은 Laravel의 매우 실용적이고 강력한 데이터 구조입니다. 개발자는 컬렉션을 사용하여 필터링, 매핑, 정렬 등과 같은 데이터에 대한 다양한 작업을 수행할 수 있습니다. 컬렉션에서 Where 메서드는 지정된 조건에 따라 컬렉션을 필터링하는 데 일반적으로 사용되는 메서드입니다.

초보자부터 숙련자까지: 선택기 사용 기술과 위치를 마스터하세요. 소개: 데이터 처리 및 분석 과정에서 선택기는 매우 중요한 도구입니다. 선택기를 통해 특정 조건에 따라 데이터 세트에서 필요한 데이터를 추출할 수 있습니다. 이 기사에서는 독자가 이 두 선택기의 강력한 기능을 빠르게 익힐 수 있도록 is 및 where 선택기의 사용 기술을 소개합니다. 1. is 선택기의 사용 is 선택기는 주어진 조건에 따라 데이터 세트를 선택할 수 있는 기본 선택기입니다.

사용법: 1. 참조 유형 변수를 null로 초기화합니다. 이는 변수가 현재 어떤 객체도 가리키지 않음을 나타냅니다. 2. 참조 유형 변수를 null로 설정하면 변수가 참조하는 객체의 메모리 공간을 해제할 수 있습니다. 3. 참조가 비어 있는지 확인하려면 null을 사용하세요. 참조가 null인지 판단하면 NullPointerException이 발생하는 것을 방지할 수 있습니다. 4. 참조가 비어 있는지 판단하려면 null을 사용하세요.
