Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)
Showing posts with label null. Show all posts
Showing posts with label null. Show all posts

NULL Types

 2 NULL types:

A-Values: The value exists but we don’t know what it is.

I-Values: The attribute is irrelevant.


They both have different meanings, but they are represented by the same NULL.

You should remember that when:

  • Design a table.
  • Design column values.
  • Query table.



IS DISTINCT FROM

In SQL, NULL is not equal (=) to anything (even to another null) and not different than any other value.
Therefore, If I select from a table, one time when a column is equal to a value and one time when it different than this value - the nulls records won't be selected in any case.

In some SQL languages there is a solution for that: IS DISTINCT FROM (or IS not DISTINCT FROM), that returns any value that it's not the given value - includes NULLs.


-- return all records:
select * from itaitable

-- return who is not DBA. NULL is unknown, so it won't be returned:
select * from itaitable where "Job" <> 'DBA’

-- return DBAs:
select * from itaitable where "Job" = 'DBA’

-- return who is not DBA or records that we don't know what is the value of "Job":
select * from itaitable where "Job" is distinct from 'DBA'


For SQL languages that don't support "IS DISTINCT FROM" we would write:
select * from itaitable where Job <> 'DBA’ or Job IS NULL


"IS DISTINCT FROM" is not available in SQL Server, Oracle, MySQL and more.
"IS DISTINCT FROM" is available in PostgreSQL, DB2.