Sdílet prostřednictvím


NULL a UNKNOWN (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

NULL označuje, že hodnota je neznámá. Hodnota null se liší od prázdné nebo nulové hodnoty. Žádné dvě hodnoty null se nerovnají. Porovnání mezi dvěma hodnotami null nebo mezi hodnotou null a jinou hodnotou vrátí neznámou, protože hodnota každého z nich NULL je neznámá.

Hodnoty null obecně označují data, která jsou neznámá, nelze použít nebo je přidat později. Například prostřední iniciála zákazníka nemusí být známa v okamžiku, kdy zákazník zadá objednávku.

Consider:

  • K otestování hodnot null v dotazu použijte IS NULL nebo IS NOT NULL v klauzuli WHERE .

  • Hodnoty null můžete do sloupce vložit explicitně tak, že v NULL příkazu nebo INSERT příkazu explicitně hlásíte UPDATE nebo opustíte sloupec z INSERT příkazu.

  • Hodnoty Null nelze použít jako informace potřebné k rozlišení jednoho řádku v tabulce od jiného řádku v tabulce. Mezi příklady patří primární klíče nebo informace používané k distribuci řádků, například distribučních klíčů.

Remarks

Pokud jsou hodnoty null přítomny v datech, logické operátory a operátory porovnání mohou potenciálně vrátit třetí výsledek UNKNOWN namísto pouze TRUE nebo FALSE. Tato potřeba pro tříhodnotovou logiku je zdrojem mnoha chyb aplikace. Logické operátory v logickém výrazu, který obsahuje UNKNOWN return UNKNOWN, pokud výsledek operátoru nezávisí na výrazu UNKNOWN . Tyto tabulky obsahují příklady tohoto chování.

Následující tabulka ukazuje výsledky použití operátoru AND na dva logické výrazy, kde jeden výraz vrátí UNKNOWN.

Výraz 1 Výraz 2 Result
TRUE UNKNOWN UNKNOWN
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN FALSE

Následující tabulka ukazuje výsledky použití operátoru OR na dva logické výrazy, kde jeden výraz vrátí UNKNOWN.

Výraz 1 Výraz 2 Result
TRUE UNKNOWN TRUE
UNKNOWN UNKNOWN UNKNOWN
FALSE UNKNOWN UNKNOWN