我正在编写一个日志分析器工具,它提供了一个动态查询的表列表。然后,对于每个表,我想允许用户运行一个选择查询,他们根据某些可选列进行分组。挑战?确定(动态)哪些列是可分组的类型。任何帮助,将不胜感激。这可能是错误分类的,但 SO 是我所知道的最流行的编码网站之一,因此将这些信息提供给未来的观众是有意义的。
任何帮助将不胜感激。谢谢。
问题:您如何(动态地)判断 MsSQL 表中的哪些列是可分组的?
示例错误:操作数数据类型文本对于最大运算符无效。
我正在编写一个日志分析器工具,它提供了一个动态查询的表列表。然后,对于每个表,我想允许用户运行一个选择查询,他们根据某些可选列进行分组。挑战?确定(动态)哪些列是可分组的类型。任何帮助,将不胜感激。这可能是错误分类的,但 SO 是我所知道的最流行的编码网站之一,因此将这些信息提供给未来的观众是有意义的。
任何帮助将不胜感激。谢谢。
问题:您如何(动态地)判断 MsSQL 表中的哪些列是可分组的?
示例错误:操作数数据类型文本对于最大运算符无效。
我认为没有一种简单的方法可以做到这一点,例如直接查询架构信息以获取 IsGroupable 属性。因此,这感觉像是一种温和的黑客攻击,但这里是:
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
DATA_TYPE IN ('bigint', 'bit', 'char', 'date', 'datetime', 'datetime2'
, 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'nchar', 'numeric'
, 'nvarchar', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time'
, 'timestamp', 'tinyint', 'uniqueidentifier', 'varchar')