SQL_VARIANT_PROPERTY
Returns the base data type and other information about a sql_variant value.
Syntax
SQL_VARIANT_PROPERTY ( expression, property )
Arguments
expression
Is an expression of type sql_variant.
property
Contains the name of the sql_variant property for which information is to be provided. property is varchar(128), and can be any of the following values.
Value | Description | Base type of sql_variant returned |
---|---|---|
BaseType | The SQL Server data type, such as:
char |
sysname
Invalid input = NULL |
Precision | The number of digits of the numeric base data type:
datetime = 23 |
int
Invalid input = NULL |
Scale | The number of digits to the right of the decimal point of the numeric base data type:
decimal (p,s) and numeric (p,s) = s |
int
Invalid input = NULL |
TotalBytes | The number of bytes required to hold both the meta data and data of the value. This information would be useful in checking the maximum side of data in a sql_variant column. If the value is greater than 900, index creation will fail. | int
Invalid input = NULL |
Collation | Represents the collation of the particular sql_variant value. | sysname
Invalid input = NULL |
MaxLength | The maximum data type length, in bytes. For example, MaxLength of nvarchar(50) is 100, MaxLength of int is 4. | int
Invalid input = NULL |
Return Types
sql_variant
Examples
This example retrieves SQL_VARIANT_PROPERTY information on the colA value 46279.1 where colB =1689, given that tableA has colA that is of type sql_variant and colB.
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'),
SQL_VARIANT_PROPERTY(colA,'Precision'),
SQL_VARIANT_PROPERTY(colA,'Scale')
FROM tableA
WHERE colB = 1689
Here is the result set. (Note that each of these three values is a sql_variant.)
decimal | 8 | 2 |