데이터 베이스 MySQL 튜토리얼 sql复合查询与null对查询结果影响分析

sql复合查询与null对查询结果影响分析

Jun 07, 2016 pm 05:47 PM
false null true where

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。

 

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

C 언어에서 null과 NULL의 차이점은 무엇입니까? C 언어에서 null과 NULL의 차이점은 무엇입니까? Sep 22, 2023 am 11:48 AM

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

정의되지 않음과 null은 무엇을 의미하나요? 정의되지 않음과 null은 무엇을 의미하나요? Nov 20, 2023 pm 02:39 PM

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

null과 정의되지 않은 것의 차이점은 무엇입니까 null과 정의되지 않은 것의 차이점은 무엇입니까 Nov 08, 2023 pm 04:43 PM

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

null 및 정의되지 않음을 사용해야 하는 경우 null 및 정의되지 않음을 사용해야 하는 경우 Nov 13, 2023 pm 02:11 PM

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

Laravel 컬렉션의 Where 메소드에 대한 실용 가이드 Laravel 컬렉션의 Where 메소드에 대한 실용 가이드 Mar 10, 2024 pm 04:36 PM

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

Laravel 컬렉션에서 Where 메소드를 사용하는 방법 Laravel 컬렉션에서 Where 메소드를 사용하는 방법 Mar 10, 2024 pm 10:21 PM

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

초보자부터 숙련자까지: is 및 where 선택기 사용 기술을 익히세요. 초보자부터 숙련자까지: is 및 where 선택기 사용 기술을 익히세요. Sep 08, 2023 am 09:15 AM

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

Java에서 null의 용도는 무엇입니까? Java에서 null의 용도는 무엇입니까? Mar 01, 2024 am 10:10 AM

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

See all articles