【问题标题】:Use SELECT AVG with parameters "SELECT AVG(@parameter)" SQL!使用带有参数“SELECT AVG(@parameter)”SQL 的 SELECT AVG!
【发布时间】:2009-09-24 16:02:51
【问题描述】:

我正在使用浮点值表,但我按参数输入列

选择 AVG(@var) 作为 Aver FROM ListVal

当我输入列名(参数)时,我收到一个错误:数据类型 nvarchar 对 avg 运算符无效。但是所有的列都是浮动的。

帮助!!!请

【问题讨论】:

  • 使用感叹号(在代码块之外)有点不礼貌

标签: sql select parameters average


【解决方案1】:

你必须使用动态 SQL

例如

EXEC( 'SELECT AVG( [' + @var + '] ) AS Aver FROM ListVal' )

【讨论】:

    【解决方案2】:

    查询参数替代单个文字值,而不是列名。这是标准 SQL 行为,每个品牌的 RDBMS 都支持相同的行为。

    所以你提供了一个列的名称,就好像你运行了这个查询:

    SELECT AVG('columnname') ...
    

    这是一个毫无意义的操作。字符串的AVG() 是什么?

    @Matt Rogish 在他的answer 中是正确的,即使列名(或表名或其他 SQL 语法)动态化的唯一方法是使用动态 SQL。即,将应用程序变量插入字符串,然后将生成的字符串用作 SQL 查询。

    您只能使用查询参数来注入单个标量值,这就是参数在查询中的解释方式。

    【讨论】:

      猜你喜欢
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2011-11-17
      相关资源
      最近更新 更多