SQL 聚合函数的数据类型(COUNT、SUM、AVG)

Data type for SQL aggregate functions (COUNT, SUM, AVG)

SQL 的新手。假设我 运行 这个查询:

SELECT COUNT(SupplierID) AS "TotalSuppliers"
FROM Products;

这将 return 包含一个名为“TotalSuppliers”的字段的单行。在我的数据库中,结果是“778”。

在 C# 中使用 typeof 进行测试时,此字段的类型为 short(ODBC SMALLINT 或 OleDB SmallInt 数据类型)。这与 SupplierID 列的数据类型匹配。

我是否可以控制用于 alias/temporary 列的类型?例如,是否可以在 ODBC SMALLINT 的列上 运行 COUNTSUM 并使用 INTEGERDOUBLE 数据类型在输出中?

您可以在查询中转换:

select cast(count(*) as double) as TotalSuppliers

但是,这是数据库中的类型。 ODBC 仍负责转换为您的应用程序类型。

注意:在大多数数据库中,count(*) 应该返回一个整数——通常是 4 个字节。我想知道在你的系统上 smallint 是否真的是 4 个字节。

如果您只是 运行 查询,您可以像 Gordon 建议的那样转换结果。

如果您需要存储的 table 中的列,您可以创建一个 table 并将 COUNT 或 SUM 的值插入到 table 中的列中,该列可以是 ODBC SMALLINT 并使用 INTEGER 或 DOUBLE 数据类型。

使用您为其指定的 alias/temporary 值。