• 相关软件
    >sql_variant 创建者:webmaster 更新时间:2006-02-16 15:51

    一种存储 SQL Server 支持的各种数据类型(textntextimage、timestampsql_variant 除外)值的数据类型。



    sql_variant 可以用在列、参数和变量中并返回用户定义函数的值。sql_variant 允许这些数据库对象支持其它数据类型的值。



    语法


    sql_variant



    注释


    sql_variant 类型的列可以包含不同数据类型的行。例如,定义为 sql_variant 的列可以存储 intbinarychar 值。不能使用 sql_variant 存储的值类型只有 textntextimagetimestamp sql_variant



    sql_variant 的最大长度可达 8016 字节。



    必须先将 sql_variant 数据类型投影为其基本数据类型值,才能使其参与加和减这类运算。



    可以给 sql_variant 赋一个默认值。该数据类型还可以将 NULL 作为其基础值,但是 NULL 值没有关联的基本类型。另外,sql_variant 还可以不将其它 sql_variant 作为其基本类型。



    UNIQUE、主键或外键可以包含 sql_variant 类型列,但是包含给定行键的数据值总长度不应大于索引的最大长度(目前是 900 字节)。



    表可以有任意多个 sql_variant 列。



    sql_variant 不能在 CONTAINSTABLE 和 FREETEXTTABLE 中使用。



    ODBC 不完全支持 sql_variant。因此,当使用用于 ODBC 的 Microsoft OLE DB 提供程序 (MSDASQL) 时,sql_variant 列的查询作为二进制数据返回。例如,包含字符串数据 'PS2091' 的 sql_variant 列作为 0x505332303931 返回。



    比较 sql_variant 值


    sql_variant 数据类型属于用于转换的数据类型层次结构列表的顶部。为了比较 sql_variant 值,SQL Server 数据类型层次结构顺序划分为数据类型系列。













































































































    数据类型层次结构数据类型系列
    sql_variantsql_variant
    datetimedatetime
    smalldatetimedatetime
    float近似数
    real近似数
    decimal精确数
    money精确数
    smallmoney精确数
    bigint精确数
    int精确数
    smallint精确数
    tinyint精确数
    bit精确数
    nvarcharUnicode
    ncharUnicode
    varcharUnicode
    charUnicode
    varbinarybinary
    binarybinary
    uniqueidentifieruniqueidentifier



    适用于 sql_variant 比较的规则如下:


    • 当具有不同基本数据类型的 sql_variant 值进行比较,而且基本数据类型属于不同的数据类型系列时,在层次结构图中数据类型系列较高的值,被认为在二者中值较大。



    • 当具有不同基本数据类型的 sql_variant 值进行比较,而且基本数据类型属于相同的数据类型系列,在层次结构图中基本数据类型比较低的值先隐性转换成其它数据类型,然后再进行比较。



    • 当比较具有 charvarcharncharvarchar 数据类型的 sql_variant 值时,将基于以下准则对它们进行比较:LCID、LCID 版本、比较标志和排序 ID。这些准则中的每一个都作为整型值并按列出的顺序进行比较。

    相关文章
    本页查看次数: