Megosztás a következőn keresztül:


= (Sztringek összehasonlítása vagy hozzárendelése)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Egy vagy WHERE több záradék két sztringjének HAVING összehasonlítása, vagy egy változót vagy oszlopot sztringre vagy egy karakterláncművelet eredményére állít be az egyenlet jobb oldalán. Ha például egy változó @x egyenlő, akkor 'Adventure' az eredeti érték WHERE @x = 'Adventure' pontosan megegyezik a sztring értékével @x'Adventure'. Az operátort = hozzárendelési operátorként is használhatja. Meghívhatja például a következőt SET @a = 'AdventureWorks':

Syntax

expression = expression

Arguments

expression

A karakter- és bináris adattípus-kategória bármely adattípusának érvényes kifejezését adja meg, kivéve a kép-, az ntext- vagy a szöveges adattípust. Mindkét kifejezésnek azonos adattípusúnak kell lennie, vagy az egyik kifejezésnek implicit módon konvertálhatónak kell lennie a másik kifejezés adattípusára.

A karakteradatokra CONVERTvaló explicit átalakítás bináris CAST sztringek és a bináris sztringek közötti bármely karakter összehasonlításához vagy hozzárendeléséhez használható.

Remarks

A sztringek = operátorral történő összehasonlítása feltételezi, hogy mindkét sztring azonos. A sztringek részleges összehasonlítási beállításaiért tekintse meg a LIKE operátort, vagy a CONTAINS és a CONTAINSTABLE teljes szöveges predikátumokat.

Az SQL Server adatbázismotorja az ANSI/ISO SQL-92 specifikációt (8.2. szakasz, Összehasonlító predikátum, Általános szabályok #3) követi a sztringek és a szóközök összehasonlítására. Az ANSI szabványhoz az összehasonlításban használt karaktersztringek kitöltése szükséges, hogy azok hossza megegyezzék az összehasonlítás előtt. A kitöltés közvetlenül befolyásolja a záradék predikátumainak és WHERE más Transact-SQL sztringek összehasonlításának HAVING szemantikáját. A Transact-SQL például a sztringeket 'abc' veszi figyelembe, és 'abc ' a legtöbb összehasonlító művelet esetében egyenértékűnek tekinti. A szabály egyetlen kivétele a LIKE predikátum. Ha egy predikátumkifejezés jobb oldalán LIKE egy záró szóközzel rendelkező érték szerepel, az adatbázismotor nem veszi fel a két értéket azonos hosszúságúra az összehasonlítás előtt. Mivel a LIKE predikátum célja definíció szerint a mintakeresések megkönnyítése egyszerű sztringegyenlőségi tesztek helyett, ez a predikátum nem sérti a korábban említett ANSI SQL-92 specifikáció szakaszát.

A SET ANSI_PADDING beállítás nem befolyásolja, hogy az adatbázismotor sztringeket tartalmaz-e, mielőtt összehasonlítja őket. SET ANSI_PADDING csak azt befolyásolja, hogy a záró üres elemek levágva legyenek-e a táblázatba beszúrt értékekből, így az hatással van a tárolásra, de az összehasonlításokra nem.

Examples

A. WHERE záradék sztringjeinek összehasonlítása

SELECT LastName,
    FirstName
FROM Person.Person
WHERE LastName = 'Johnson';

B. Where záradék sztringjeinek összehasonlítása binárisból való átalakítással

DECLARE @LNameBin BINARY (100) = 0x5A68656E67;

SELECT LastName,
    FirstName
FROM Person.Person
WHERE LastName = CONVERT(VARCHAR, @LNameBin);

C. Karakterlánc-hozzárendelés változóhoz

Ez a példa a sztringadatok egyszerű hozzárendelését mutatja be egy változóhoz a = operátor használatával.

DECLARE @dbname VARCHAR(100);

SET @dbname = 'Adventure';

D. Sztringek összehasonlítása szóközökkel

Az alábbi lekérdezések olyan sztringek összehasonlítását szemléltetik, ahol az egyik oldal szóközöket tartalmaz, a másik pedig nem:

CREATE TABLE #tmp (c1 VARCHAR(10));
GO

INSERT INTO #tmp VALUES ('abc ');

INSERT INTO #tmp VALUES ('abc');
GO

SELECT DATALENGTH(c1) AS 'EqualWithSpace', * FROM #tmp
WHERE c1 = 'abc ';

SELECT DATALENGTH(c1) AS 'EqualNoSpace  ', * FROM #tmp
WHERE c1 = 'abc';

SELECT DATALENGTH(c1) AS 'GTWithSpace   ', * FROM #tmp
WHERE c1 > 'ab ';

SELECT DATALENGTH(c1) AS 'GTNoSpace     ', * FROM #tmp
WHERE c1 > 'ab';

SELECT DATALENGTH(c1) AS 'LTWithSpace   ', * FROM #tmp
WHERE c1 < 'abd ';

SELECT DATALENGTH(c1) AS 'LTNoSpace     ', * FROM #tmp
WHERE c1 < 'abd';

SELECT DATALENGTH(c1) AS 'LikeWithSpace ', * FROM #tmp
WHERE c1 LIKE 'abc %';

SELECT DATALENGTH(c1) AS 'LikeNoSpace   ', * FROM #tmp
WHERE c1 LIKE 'abc%';
GO

DROP TABLE #tmp;
GO

Következő lépések