By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
The Ugly Generated Query Is: |
---|
;WITH x AS ( SELECT [col h] = 'h', [type h] = 'varchar(240)',[h], [len h] = LEN([h]), [is_num h] = CONVERT(tinyint, ISNUMERIC([h])), [is_date h] = CONVERT(tinyint, ISDATE([h])), [has_dec h] = CASE WHEN ISNUMERIC([h]) = 1 AND [h] LIKE N'%.%' THEN 1 ELSE 0 END,[col i] = 'i', [type i] = 'varchar(100)',[i], [len i] = LEN([i]), [is_num i] = CONVERT(tinyint, ISNUMERIC([i])), [is_date i] = CONVERT(tinyint, ISDATE([i])), [has_dec i] = CASE WHEN ISNUMERIC([i]) = 1 AND [i] LIKE N'%.%' THEN 1 ELSE 0 END,[col j] = 'j', [type j] = 'varchar(320)',[j], [len j] = LEN([j]), [is_num j] = CONVERT(tinyint, ISNUMERIC([j])), [is_date j] = CONVERT(tinyint, ISDATE([j])), [has_dec j] = CASE WHEN ISNUMERIC([j]) = 1 AND [j] LIKE N'%.%' THEN 1 ELSE 0 END,[$garbage$]='' FROM dbo.foo ) SELECT ColumnName = MIN([col h]), CurrentType = MIN([type h]), LongestValue = MAX([len h]), [AllNumerics?] = MIN([is_num h]), [AllDates?] = MIN([is_date h]), [AnyContainDecimal] = MAX([has_dec h]) FROM x UNION ALL SELECT ColumnName = MIN([col i]), CurrentType = MIN([type i]), LongestValue = MAX([len i]), [AllNumerics?] = MIN([is_num i]), [AllDates?] = MIN([is_date i]), [AnyContainDecimal] = MAX([has_dec i]) FROM x UNION ALL SELECT ColumnName = MIN([col j]), CurrentType = MIN([type j]), LongestValue = MAX([len j]), [AllNumerics?] = MIN([is_num j]), [AllDates?] = MIN([is_date j]), [AnyContainDecimal] = MAX([has_dec j]) FROM x |
ColumnName | CurrentType | LongestValue | AllNumerics? | AllDates? | AnyContainDecimal |
---|---|---|---|---|---|
h | varchar(240) | 4 | 1 | 0 | 1 |
i | varchar(100) | 3 | 0 | 0 | 0 |
j | varchar(320) | 17 | 0 | 1 | 0 |