Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Porovná rovnost dvou výrazů (relační operátor) v SQL Serveru.
Syntax
expression = expression
Arguments
expression
Je libovolný platný výraz. Pokud výrazy nejsou stejného datového typu, musí být datový typ pro jeden výraz implicitně konvertibilní na datový typ druhého. Převod vychází z pravidel priority datového typu.
Typy výsledků
logický
Remarks
Při porovnávání pomocí výrazu NULL závisí výsledek na ANSI_NULLS nastavení:
Pokud
ANSI_NULLSje nastavena hodnota ON, výsledek jakéhokoli porovnání s hodnotou NULL je NEZNÁMÝ, a to podle konvence ANSI, že hodnota NULL je neznámá hodnota a nelze ji porovnat s žádnou jinou hodnotou, včetně jiných hodnot NUL.Pokud
ANSI_NULLSje nastavena hodnota OFF, výsledek porovnání null s hodnotou NULL je PRAVDA a výsledek porovnání hodnoty NULL s jakoukoli jinou hodnotou je NEPRAVDA.
Další informace naleznete v tématu SET ANSI_NULLS (Transact-SQL).
Logický výraz, který vede k neznámému chování, se ve většině případů chová podobně jako NEPRAVDA, ale ne všechny případy. Další informace najdete v tématech NULL a UNKNOWN (Transact-SQL) a NOT (Transact-SQL).
Examples
A. Použití = v jednoduchém dotazu
Následující příklad používá operátor Equals k vrácení všech řádků v HumanResources.Department tabulce, ve které je hodnota ve GroupName sloupci rovna slovu "Manufacturing".
-- Uses AdventureWorks
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
Tady je soubor výsledků.
DepartmentID Name
------------ --------------------------------------------------
7 Production
8 Production Control
(2 row(s) affected)
B. Porovnání hodnot NULL a jiných hodnot než NULL
Následující příklad používá relační operátory Equals (=) a Not Equal To (<>) k porovnání s NULL a nenulálními hodnotami v tabulce. Příklad také ukazuje, že IS NULL nastavení není ovlivněno SET ANSI_NULLS .
-- Create table t1 and insert 3 rows.
CREATE TABLE dbo.t1 (a INT NULL);
INSERT INTO dbo.t1 VALUES (NULL),(0),(1);
GO
-- Print message and perform SELECT statements.
PRINT 'Testing default setting';
DECLARE @varname int;
SET @varname = NULL;
SELECT a
FROM t1
WHERE a = @varname;
SELECT a
FROM t1
WHERE a <> @varname;
SELECT a
FROM t1
WHERE a IS NULL;
GO
-- SET ANSI_NULLS to ON and test.
PRINT 'Testing ANSI_NULLS ON';
SET ANSI_NULLS ON;
GO
DECLARE @varname int;
SET @varname = NULL
SELECT a
FROM t1
WHERE a = @varname;
SELECT a
FROM t1
WHERE a <> @varname;
SELECT a
FROM t1
WHERE a IS NULL;
GO
-- SET ANSI_NULLS to OFF and test.
PRINT 'Testing SET ANSI_NULLS OFF';
SET ANSI_NULLS OFF;
GO
DECLARE @varname int;
SET @varname = NULL;
SELECT a
FROM t1
WHERE a = @varname;
SELECT a
FROM t1
WHERE a <> @varname;
SELECT a
FROM t1
WHERE a IS NULL;
GO
-- Drop table t1.
DROP TABLE dbo.t1;
Tady je soubor výsledků.
Testing default setting
a
-----------
NULL
(1 row(s) affected)
a
-----------
0
1
(2 row(s) affected)
a
-----------
NULL
(1 row(s) affected)
Testing ANSI_NULLS ON
a
-----------
(0 row(s) affected)
a
-----------
(0 row(s) affected)
a
-----------
NULL
(1 row(s) affected)
Testing SET ANSI_NULLS OFF
a
-----------
NULL
(1 row(s) affected)
a
-----------
0
1
(2 row(s) affected)
a
-----------
NULL
(1 row(s) affected)
Viz také
Datové typy (Transact-SQL)
Výrazy (Transact-SQL)
Operátory (Transact-SQL)