碰到一问题 不知道是否有方法查询一个变量的类型
declare @s varchar(max)
可否知道@s变量的类型?补充问题:
因为虽然定义@s 为varchar(max)类型 但实际中有很多函数会把varchar(max)类型转换为varchar 
我想要测试这个变量的类型在何时开始转变的 所以才提出此问题

解决方案 »

  1.   

    [code=SQL][code=SQL]DECLARE @S VARCHAR(20)
    SELECT  SQL_VARIANT_PROPERTY   (ISNULL(@S,''),'BaseType') 
    /* 
    varchar
    */[/code][/code]
      

  2.   

    SQL_VARIANT_PROPERTY
    不能区分varchar与varchar(max)...
      

  3.   

    DECLARE @S VARCHAR(2000)
    set @s='yinqi'
    SELECT  SQL_VARIANT_PROPERTY   (ISNULL(@S,''),'BaseType'),
    SQL_VARIANT_PROPERTY   (@s,'MaxLength')
      

  4.   


    declare @h varchar(max)
    select sql_variant_property (isnull(@h,''),'basetype')
    error:
    Operand type clash: varchar(max) is incompatible with sql_variant
      

  5.   


    DECLARE @s VARCHAR(20);
    select @s = '';
    SELECT SQL_VARIANT_PROPERTY(@s, 'BaseType'), SQL_VARIANT_PROPERTY(@s, 'MaxLength') 
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    varchar                                                                                                                                                                                                                                                          20(1 行受影响)