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
SQL-adatbázis a Microsoft Fabricben
Olyan adattípus, amely különböző SQL Server által támogatott adattípusok értékeit tárolja.
Transact-SQL szintaxis konvenciói
Syntax
sql_variant
Remarks
sql_variant használható oszlopokban, paraméterekben, változókban és a felhasználó által definiált függvények visszatérési értékeiben. sql_variant lehetővé teszi, hogy ezek az adatbázis-objektumok más adattípusok értékeit is támogatják.
A sql_variant típusú oszlopok különböző adattípusú sorokat tartalmazhatnak. A sql_variant definiált oszlop például tárolhat , binárisés karakter értékeket.
sql_variant maximális hossza 8016 bájt lehet. Ez magában foglalja az alaptípus-információkat és az alaptípus értékét is. A tényleges alaptípusérték maximális hossza 8000 bájt.
Az sql_variant adattípust először az alapadattípus értékére kell leadni, mielőtt részt vesz az olyan műveletekben, mint az összeadás és kivonás.
sql_variant alapértelmezett érték rendelhető hozzá. Ennek az adattípusnak a mögöttes értéke is lehet NULL, de a NULL értékek nem lesznek társított alaptípussal. Emellett sql_variant alaptípusaként nem lehet másik sql_variant.
Az egyedi, elsődleges vagy idegen kulcs tartalmazhat sql_varianttípusú oszlopokat, de az adott sor kulcsát alkotó adatértékek teljes hossza nem haladhatja meg az index maximális hosszát. Ez 900 bájt.
A táblák tetszőleges számú sql_variant oszlopot tartalmazhatnak.
sql_variant nem használható a CONTAINSTABLE és a FREETEXTTABLE fájlban.
Az ODBC nem támogatja teljes mértékben a sql_variant. Ezért az sql_variant oszlopok lekérdezései bináris adatként jelennek meg, amikor a Microsoft OLE DB Provider for ODBC -t (MSDASQL- t) használja. Például a "PS2091" karaktersztringadatokat tartalmazó sql_variant oszlop 0x505332303931 lesz visszaadva.
Sql_variant értékek összehasonlítása
Az sql_variant adattípus az adattípus-hierarchialista tetején található konvertáláshoz. sql_variant összehasonlítások esetén az SQL Server adattípus-hierarchiarendje adattípus-családokba van csoportosítva.
| Adattípus-hierarchia | Adattípus-család |
|---|---|
| sql_variant | sql_variant |
| datetime2 | Dátum és idő |
| datetimeoffset | Dátum és idő |
| datetime | Dátum és idő |
| smalldatetime | Dátum és idő |
| date | Dátum és idő |
| time | Dátum és idő |
| float | Közelítő numerikus |
| real | Közelítő numerikus |
| decimal | Pontos numerikus |
| money | Pontos numerikus |
| smallmoney | Pontos numerikus |
| bigint | Pontos numerikus |
| int | Pontos numerikus |
| smallint | Pontos numerikus |
| tinyint | Pontos numerikus |
| bit | Pontos numerikus |
| nvarchar | Unicode |
| nchar | Unicode |
| varchar | Unicode |
| char | Unicode |
| varbinary | Binary |
| binary | Binary |
| uniqueidentifier | Uniqueidentifier |
A következő szabályok vonatkoznak sql_variant összehasonlításokra:
- Ha sql_variant különböző alapadattípusok értékeit hasonlítják össze, és az alapadattípusok különböző adattípus-családokban találhatók, a hierarchiadiagramban magasabb adattípusú érték a két érték közül a nagyobb.
- Ha sql_variant különböző alapadattípusok értékeit hasonlítják össze, és az alapadattípusok ugyanabban az adattípus-családban találhatók, az az érték, amelynek alapadattípusa alacsonyabb a hierarchiadiagramon, implicit módon konvertálódik a másik adattípusra, és ezt követően az összehasonlítás történik.
- Ha sql_variantkarakter, varchar, ncharvagy nvarchar adattípus értékeit hasonlítja össze először a rendszer a következő feltételek alapján: LCID, LCID verzió, összehasonlító jelzők és rendezési azonosító. A rendszer ezeket a feltételeket egész számértékként és a felsorolt sorrendben hasonlítja össze. Ha az összes feltétel egyenlő, akkor a rendszer a tényleges sztringértékeket a rendezésnek megfelelően hasonlítja össze.
Sql_variant adatok konvertálása
A sql_variant adattípus kezelésekor az SQL Server támogatja az objektumok implicit átalakítását más adattípusokkal a sql_variant típusra. Az SQL Server azonban nem támogatja az sql_variant adatok implicit konvertálását egy másik adattípusú objektumra.
Restrictions
Az alábbi lista azokat az értéktípusokat sorolja fel, amelyek nem tárolhatók sql_varianthasználatával:
- datetimeoffset1
- geography
- geometry
- hierarchyid
- image
- ntext
- nvarchar(max)
- sorverzió (időbélyeg)
- text
- varchar(max)
- varbinary(max)
- Felhasználó által definiált típusok
- xml
1 SQL Server 2012 és újabb verzió nem korlátozza datetimeoffset.
Examples
A. Sql_variant használata egy táblában
Az alábbi példa egy sql_variant adattípusú táblát hoz létre. Ezután a példa SQL_VARIANT_PROPERTY információt kér le arról a colA értékről, 46279.1 , ahol colB =1689, mivel tableAcolA és sql_varianttípusú colB rendelkezik .
CREATE TABLE tableA(colA sql_variant, colB INT)
INSERT INTO tableA values ( CAST(46279.1 as decimal(8,2)), 1689)
SELECT SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',
SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',
SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale'
FROM tableA
WHERE colB = 1689
Itt van az eredményhalmaz. Vegye figyelembe, hogy a három érték mindegyike egy sql_variant.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)
B. Sql_variant használata változóként
Az alábbi példa létrehoz egy változót a sql_variant adattípussal, majd lekéri SQL_VARIANT_PROPERTY adatokat egy @v1nevű változóról.
DECLARE @v1 sql_variant;
SET @v1 = 'ABC';
SELECT @v1;
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');
Lásd még
CAST és CONVERT (Transact-SQL)
SQL_VARIANT_PROPERTY (Transact-SQL)