Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
SQL Server tarafından desteklenen çeşitli veri türlerinin değerlerini depolayan bir veri türü.
Transact-SQL söz dizimi kuralları
Syntax
sql_variant
Remarks
sql_variant sütunlarda, parametrelerde, değişkenlerde ve kullanıcı tanımlı işlevlerin dönüş değerlerinde kullanılabilir. sql_variant, bu veritabanı nesnelerinin diğer veri türlerinin değerlerini desteklemesini sağlar.
sql_variant türünde bir sütun farklı veri türlerinde satırlar içerebilir. Örneğin,
sql_variant uzunluğu en fazla 8016 bayt olabilir. Bu hem temel tür bilgilerini hem de temel tür değerini içerir. Gerçek temel tür değerinin uzunluk üst sınırı 8.000 bayttır.
sql_variant veri türü, toplama ve çıkarma gibi işlemlere katılmadan önce temel veri türü değerine atanmalıdır.
sql_variant varsayılan değer atanabilir. Bu veri türü, temel alınan değer olarak NULL değerine de sahip olabilir, ancak NULL değerleri ilişkili bir temel türe sahip olmaz. Ayrıca, sql_variant temel türü olarak başka bir sql_variant olamaz.
Benzersiz, birincil veya yabancı anahtar sql_varianttüründe sütunlar içerebilir, ancak belirli bir satırın anahtarını oluşturan veri değerlerinin toplam uzunluğu bir dizinin maksimum uzunluğundan fazla olmamalıdır. Bu 900 bayttır.
Bir tabloda herhangi bir sayıda sql_variant sütunu olabilir.
sql_variant CONTAINSTABLE ve FREETEXTTABLE'da kullanılamaz.
ODBC, sql_varianttam olarak desteklemez. Bu nedenle, ODBC için Microsoft OLE DB Sağlayıcısı'nı (MSDASQL) kullandığınızda sql_variant sütun sorguları ikili veri olarak döndürülür. Örneğin, 'PS2091' karakter dizesi verilerini içeren bir sql_variant sütunu 0x505332303931 olarak döndürülür.
sql_variant Değerlerini Karşılaştırma
sql_variant veri türü, dönüştürme için veri türü hiyerarşi listesinin en üstüne aittir. sql_variant karşılaştırmalar için SQL Server veri türü hiyerarşi sırası veri türü aileleri olarak gruplandırılır.
| Veri türü hiyerarşisi | Veri türü ailesi |
|---|---|
| sql_variant | sql_variant |
| datetime2 | Tarih ve saat |
| datetimeoffset | Tarih ve saat |
| datetime | Tarih ve saat |
| smalldatetime | Tarih ve saat |
| date | Tarih ve saat |
| time | Tarih ve saat |
| float | Yaklaşık sayısal |
| real | Yaklaşık sayısal |
| decimal | Tam sayısal |
| money | Tam sayısal |
| smallmoney | Tam sayısal |
| bigint | Tam sayısal |
| int | Tam sayısal |
| smallint | Tam sayısal |
| tinyint | Tam sayısal |
| bit | Tam sayısal |
| nvarchar | Unicode |
| nchar | Unicode |
| varchar | Unicode |
| char | Unicode |
| varbinary | Binary |
| binary | Binary |
| uniqueidentifier | Uniqueidentifier |
Aşağıdaki kurallar sql_variant karşılaştırmalar için geçerlidir:
- Farklı temel veri türlerinin sql_variant değerleri karşılaştırıldığında ve temel veri türleri farklı veri türü ailelerinde olduğunda, hiyerarşi grafiğinde veri türü ailesi daha yüksek olan değer, iki değerin daha büyük olduğu kabul edilir.
- Farklı temel veri türlerinin sql_variant değerleri karşılaştırıldığında ve temel veri türleri aynı veri türü ailesinde olduğunda, hiyerarşi grafiğinde temel veri türü daha düşük olan değer örtük olarak diğer veri türüne dönüştürülür ve karşılaştırma yapılır.
- sql_variantkarakteri, varchar, ncharveya nvarchar veri türlerinin değerleri karşılaştırıldığında, bunların harmanlamaları ilk olarak şu ölçütlere göre karşılaştırılır: LCID, LCID sürümü, karşılaştırma bayrakları ve sıralama kimliği. Bu ölçütlerin her biri tamsayı değerleri olarak ve listelenen sırayla karşılaştırılır. Bu ölçütlerin tümü eşitse, gerçek dize değerleri harmanlama göre karşılaştırılır.
sql_variant Verileri Dönüştürme
sql_variant veri türünü işlerken SQL Server, diğer veri türlerine sahip nesnelerin sql_variant türüne örtük olarak dönüştürülmelerini destekler. Ancak SQL Server, sql_variant verilerden başka bir veri türüne sahip bir nesneye örtük dönüştürmeleri desteklemez.
Restrictions
Aşağıda, sql_variantkullanılarak depolanamayan değer türleri listelenmiştir:
- datetimeoffset1
- geography
- geometry
- hierarchyid
- image
- ntext
- nvarchar(max)
- Rowversion (zaman damgası)
- text
- varchar(max)
- varbinary(max)
- Kullanıcı tanımlı türler
- xml
SQL Server 2012 ve üzeri 1
Examples
A. Tabloda sql_variant kullanma
Aşağıdaki örnek, sql_variant veri türüne sahip bir tablo oluşturur. Ardından örnek, SQL_VARIANT_PROPERTYcolA ve 46279.1türünde colB sahip olduğu =1689tableAcolAsql_variant değeri hakkında colB bilgi alır.
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
Sonuç kümesi aşağıdadır. Bu üç değerin her birinin bir sql_variantolduğunu unutmayın.
Base Type Precision Scale
--------- --------- -----
decimal 8 2
(1 row(s) affected)
B. Değişken olarak sql_variant kullanma
Aşağıdaki örnek, sql_variant veri türünü kullanarak bir değişken oluşturur ve SQL_VARIANT_PROPERTYadlı değişken hakkında @v1 bilgi alır.
DECLARE @v1 sql_variant;
SET @v1 = 'ABC';
SELECT @v1;
SELECT SQL_VARIANT_PROPERTY(@v1, 'BaseType');
SELECT SQL_VARIANT_PROPERTY(@v1, 'MaxLength');
Ayrıca bakınız
CAST ve CONVERT (Transact-SQL)
SQL_VARIANT_PROPERTY (Transact-SQL)