programing

MySQL - NULL safe not equal 연산자

newstyles 2023. 9. 11. 21:32

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