= (uguale a) (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
Esegue un confronto per determinare se due espressioni sono uguali (operatore di confronto) in SQL Server.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
expression = expression
Argomenti
expression
Qualsiasi espressione valida. Se il tipo di dati delle espressioni non è uguale, è necessario che il tipo di dati di un'espressione possa essere convertito in modo implicito nel tipo di dati dell'altra. La conversione dipende dalle regole di precedenza dei tipi di dati.
Tipi restituiti
Booleano
Osservazioni:
Se si esegue il confronto usando un'espressione NULL, il risultato dipende dall'impostazione ANSI_NULLS
:
Se
ANSI_NULLS
è impostata su ON, il risultato di qualsiasi confronto con NULL è UNKNOWN, in base alla convenzione ANSI secondo la quale NULL è un valore sconosciuto che non può essere confrontato con nessun altro valore, neanche con altri valori NULL.Se
ANSI_NULLS
è impostata su OFF, il risultato del confronto tra NULL a NULL è TRUE e il risultato del confronto tra NULL e qualsiasi altro valore è FALSE.
Per altre informazioni, vedere SET ANSI_NULLS (Transact-SQL).
Un'espressione booleana con risultato UNKNOWN si comporta in modo simile a FALSE nella maggior parte dei casi, ma non in tutti. Per altre informazioni, vedere NULL e UNKNOWN (Transact-SQL) e NOT (Transact-SQL).
Esempi
R. Uso di = in una query semplice
Nell'esempio seguente l'operatore Uguale a viene utilizzato per restituire tutte le righe della tabella HumanResources.Department
in cui il valore della colonna GroupName
è uguale alla parola "Manufacturing".
-- Uses AdventureWorks
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
Il set di risultati è il seguente.
DepartmentID Name
------------ --------------------------------------------------
7 Production
8 Production Control
(2 row(s) affected)
B. Confronto tra valori NULL e non NULL
Nell'esempio seguente vengono utilizzati gli operatori di confronto Uguale a (=
) e Diverso da (<>
) per confrontare i valori NULL
e non Null di una tabella. L'esempio evidenzia anche il fatto che l'impostazione dell'opzione SET ANSI_NULLS
non influisce su IS NULL
.
-- 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;
Il set di risultati è il seguente.
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)
Vedi anche
Tipi di dati (Transact-SQL)
Espressioni (Transact-SQL)
Operatori (Transact-SQL)