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
的列上 运行 COUNT
或 SUM
并使用 INTEGER
或 DOUBLE
数据类型在输出中?
您可以在查询中转换:
select cast(count(*) as double) as TotalSuppliers
但是,这是数据库中的类型。 ODBC 仍负责转换为您的应用程序类型。
注意:在大多数数据库中,count(*)
应该返回一个整数——通常是 4 个字节。我想知道在你的系统上 smallint
是否真的是 4 个字节。
如果您只是 运行 查询,您可以像 Gordon 建议的那样转换结果。
如果您需要存储的 table 中的列,您可以创建一个 table 并将 COUNT 或 SUM 的值插入到 table 中的列中,该列可以是 ODBC SMALLINT 并使用 INTEGER 或 DOUBLE 数据类型。
使用您为其指定的 alias/temporary 值。
SQL 的新手。假设我 运行 这个查询:
SELECT COUNT(SupplierID) AS "TotalSuppliers"
FROM Products;
这将 return 包含一个名为“TotalSuppliers”的字段的单行。在我的数据库中,结果是“778”。
在 C# 中使用 typeof
进行测试时,此字段的类型为 short
(ODBC SMALLINT
或 OleDB SmallInt
数据类型)。这与 SupplierID
列的数据类型匹配。
我是否可以控制用于 alias/temporary 列的类型?例如,是否可以在 ODBC SMALLINT
的列上 运行 COUNT
或 SUM
并使用 INTEGER
或 DOUBLE
数据类型在输出中?
您可以在查询中转换:
select cast(count(*) as double) as TotalSuppliers
但是,这是数据库中的类型。 ODBC 仍负责转换为您的应用程序类型。
注意:在大多数数据库中,count(*)
应该返回一个整数——通常是 4 个字节。我想知道在你的系统上 smallint
是否真的是 4 个字节。
如果您只是 运行 查询,您可以像 Gordon 建议的那样转换结果。
如果您需要存储的 table 中的列,您可以创建一个 table 并将 COUNT 或 SUM 的值插入到 table 中的列中,该列可以是 ODBC SMALLINT 并使用 INTEGER 或 DOUBLE 数据类型。
使用您为其指定的 alias/temporary 值。