Sdílet prostřednictvím


= (rovná se) (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

Porovná rovnost dvou výrazů (relační operátor) v SQL Serveru.

Transact-SQL konvence syntaxe

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_NULLS je 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_NULLS je 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)