Sql_Variant

sql_variant to typ danych, który pozwala przechowywać wartości różnego typu (do 8000 bajtów) w kolumnie lub zmiennej.
 
Możesz wprowadzić dowolny typ danych oprócz:
  1. varchar(max)
  2. varbinary(max)
  3. nvarchar(max)
  4. xml
  5. text
  6. ntext
  7. image
  8. rowversion (timestamp)
  9. geography
  10. hierarchyid
  11. geometry
  12. datetimeoffset
  13. User-defined types

-- kolumna typu sql variant pozwala przechowywac roznego typu wartosci
DROP TABLE IF EXISTS #TEST
CREATE TABLE #TEST (
    colA sql_variant,
    colB INT)
    
INSERT INTO #TEST select CAST(101.1 as decimal(8,2)), 1
INSERT INTO #TEST select CAST('Test123' as varchar(10)), 2
INSERT INTO #TEST select cast(getdate() as datetime),3

SELECT   
    colA,
    SQL_VARIANT_PROPERTY(colA,'BaseType') AS 'Base Type',  
    SQL_VARIANT_PROPERTY(colA,'Precision') AS 'Precision',  
    SQL_VARIANT_PROPERTY(colA,'Scale') AS 'Scale',
    SQL_VARIANT_PROPERTY(colA,'TotalBytes') AS 'TotalBytes',
    SQL_VARIANT_PROPERTY(colA,'Collation') AS 'Collation',
    SQL_VARIANT_PROPERTY(colA,'MaxLength') AS 'MaxLength'
FROM     
    #TEST  

Rezultat kolumny SQL_VARIANT
Wybór wierszy