{"id":544,"date":"2016-03-15T13:07:29","date_gmt":"2016-03-15T10:07:29","guid":{"rendered":"http:\/\/langtoday.com\/?p=544"},"modified":"2017-12-06T16:42:46","modified_gmt":"2017-12-06T13:42:46","slug":"%d1%81%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5-%d1%81-null-%d0%b2-sql","status":"publish","type":"post","link":"https:\/\/langtoday.com\/?p=544","title":{"rendered":"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441 NULL \u0432 SQL"},"content":{"rendered":"<p>\u0412 SQL \u043d\u0435\u043b\u044c\u0437\u044f \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (<strong>ON, WHERE<\/strong>) \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441 <em>NULL<\/em>. \u0422\u043e \u0435\u0441\u0442\u044c<\/p>\n<pre class=\"lang:pgsql decode:true\">SELECT * FROM SomeTable WHERE SomeColumn != NULL;\n\nSELECT * FROM SomeTable WHERE SomeColumn &lt;&gt; NULL;\n\nSELECT * FROM SomeTable WHERE SomeColumn = NULL;<\/pre>\n<p>\u0412\u0441\u0435 \u044d\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043a \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u044b <em>NULL<\/em> (\u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435) \u0438\u043b\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0435\u043c\u0443 \u0440\u0430\u0432\u043d\u044b (\u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445) \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0443\u0442 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<!--more--><\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435<\/p>\n<pre class=\"lang:pgsql decode:true\">SELECT * FROM SomeTable WHERE SomeColumn =\u00a0OtherColumn;<\/pre>\n<p>\u0432 \u0432\u044b\u0434\u0430\u0447\u0443 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0443\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 SomeColumn, \u0438 OtherColumn \u0440\u0430\u0432\u043d\u044b <em>NULL<\/em>.<\/p>\n<p>\u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441 NULL \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b <strong>IS NULL<\/strong> \u0438 <strong>IS NOT NULL<\/strong>.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435:<\/p>\n<pre class=\"lang:pgsql decode:true\">SELECT * FROM SomeTable \nWHERE SomeColumn =\u00a0OtherColumn \n  OR (SomeColumn IS NULL AND OtherColumn IS NULL);<\/pre>\n<p class=\"SYNOPSIS\"><tt class=\"REPLACEABLE c3\">\u0412 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u0445:<\/tt><\/p>\n<pre class=\"lang:pgsql decode:true \">expression IS TRUE\n\nexpression IS NOT TRUE\n\nexpression IS FALSE\n\nexpression IS NOT FALSE\n\nexpression IS UNKNOWN\n\nexpression IS NOT UNKNOWN<\/pre>\n<p class=\"SYNOPSIS\"><tt class=\"REPLACEABLE c3\"><\/tt>NULL \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0435 \u043a\u0430\u043a NULL, \u0430 \u043a\u0430\u043a UNKNOWN, \u0438 \u0432\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e TRUE \u0438\u043b\u0438 FALSE, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441 NULL, \u0435\u0441\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0430\u0441 \u0443\u0441\u0442\u0440\u043e\u0438\u0442.<\/p>\n<p class=\"SYNOPSIS\">\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043d\u0435\u0442 TRUE:<\/p>\n<pre class=\"lang:pgsql decode:true \">select (null = '') IS NOT FALSE<\/pre>\n<h2>PostgreSQL<\/h2>\n<p>\u0412 PostgreSQL \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b is (not) distinct from , \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 SQL:2003. \u042d\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441 null \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043a. \u0422\u0430\u043a, \u043f\u0441\u0435\u0432\u0434\u043e\u043f\u0440\u0438\u043c\u0435\u0440\u044b (\u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0438\u0435) \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435, \u043a\u0430\u043a \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre class=\"lang:pgsql decode:true \">--SELECT * FROM SomeTable WHERE SomeColumn &lt;&gt; NULL;\n\nSELECT * FROM SomeTable WHERE SomeColumn IS DISTINCT FROM NULL;\n\n--SELECT * FROM SomeTable WHERE SomeColumn = NULL;\n\nSELECT * FROM SomeTable WHERE SomeColumn IS NOT DISTINCT FROM NULL;<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 SQL \u043d\u0435\u043b\u044c\u0437\u044f \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (ON, WHERE) \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441 NULL. \u0422\u043e \u0435\u0441\u0442\u044c SELECT * FROM SomeTable WHERE SomeColumn != NULL; SELECT * FROM SomeTable WHERE SomeColumn &lt;&gt; NULL; SELECT * FROM SomeTable WHERE SomeColumn = NULL; \u0412\u0441\u0435 \u044d\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043a \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0432\u043d\u044b NULL (\u0432&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[85],"tags":[87,88],"class_list":["post-544","post","type-post","status-publish","format-standard","hentry","category-sql","tag-postgresql","tag-sql"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts\/544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=544"}],"version-history":[{"count":6,"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts\/544\/revisions"}],"predecessor-version":[{"id":918,"href":"https:\/\/langtoday.com\/index.php?rest_route=\/wp\/v2\/posts\/544\/revisions\/918"}],"wp:attachment":[{"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/langtoday.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}