MySQL - NULL safe not equal 연산자
궁금할 뿐입니다 - NULL safe equal operator에 대해 알고 있습니다.<=>
, 동일한 연산자가 아닌 NULL Safe가 있습니까?아니면 항상 이런 걸 써야 해요.
(tab.id != 1 OR tab.id IS NULL)
아니면 누군가가 더 좋아하거나
!(tab.id <=> 1)
발견했습니다.NOT (NULL <=> 1)
작동하고 ISO 표준에도 부합한다고 생각하지만 번거롭습니다.열 이름을 사용하여 표시하는 더 나은 방법은 다음과 같습니다.NOT (tbl.col1 <=> 1)
COALESCE(tab.id, 0) != 1
마음에 드시면 여기서 사용하실 수 있습니다.매개 변수를 조사하고, 그렇지 않은 첫 번째 값을 반환합니다.NULL
. 이 경우에는.NULL
, 비교할 것입니다.0 != 1
. 더 많은 징후를 사용할 수도 있지만, 그러한 경우 해결책으로 항상 반대되는 "부울리언"을 갖도록 강요받는 대신 관리가 더 쉽습니다.
다음에 대한 설명서 읽기
이제 MySQL에는 NULL-safe not equal 연산자가 없습니다.
MySQL을 사용하는 가장 보편적인 솔루션은 다음과 같습니다.
!(tab.id <=> 1)
아니면
NOT tab.id <=> 1
왜냐하면 그것은 대신에라도 제대로 작동할 것이기 때문입니다.1
당신은 사용할것입니다.NULL
.
만약 당신이 비교의 RHS를 알고 있다면,IS NOT NULL
:
COALESCE(tab.id != 1, 1)
아니면
COALESCE(tab.id != 1, TRUE)
정확한 결과를 알려줄 것입니다.
이것이 다음보다 더 잘 읽히는지 여부:
(tab.id != 1 OR tab.id IS NULL)
논쟁의 여지가 있습니다..
저는 또한 그들을 걸러내고 싶은 유혹을 느낄 것입니다.NULL
비교와 함께 논리부터 먼저 생각해볼 필요가 없습니다!당신의 첫 번째 방정식은 아마 다음과 같이 쓸 겁니다.
(tab.id IS NULL OR tab.id != 1)
성능은 다음과 같은 제품의 보급률에 따라 달라집니다.NULL
그러나
언급URL : https://stackoverflow.com/questions/16234854/mysql-null-safe-not-equal-operator
'programing' 카테고리의 다른 글
Powershell Write-Host를 텍스트 파일에 추가 - 컴퓨터 이름 및 타임 스탬프 (0) | 2023.09.11 |
---|---|
모듈을 python에 "pythonport"한 다음 가져오기 후 코드를 변경하는 방법 (0) | 2023.09.11 |
GCC: 배열 유형에 불완전한 요소 유형이 있습니다. (0) | 2023.09.11 |
도커: $PATH에서 실행 파일을 찾을 수 없습니다. (0) | 2023.09.11 |
NodeJS를 사용하여 CSV 파일 구문 분석 (0) | 2023.09.11 |