Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-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