Мне было интересно, не мог бы кто-нибудь объяснить мне способ получения табличной информации, включая информацию о текущих данных, которые хранится в таблице ... Я использую SQL Server 2008 R2 , ниже приведенотекущий скрипт, который я сделал ...
SELECT
Sch.name AS 'Schema',
Tb.Name AS 'Table',
C.Name AS 'Column',
Tp.Name AS 'Type',
C.max_length,
C.precision,
C.scale
FROM Sys.Tables Tb
JOIN Sys.Schemas Sch
ON Sch.Schema_Id = Tb.Schema_Id
JOIN Sys.Columns C
ON C.Object_Id = Tb.Object_Id
JOIN Sys.Types Tp
ON Tp.System_Type_Id = C.System_Type_Id
WHERE Tp.name = 'numeric'
AND C.scale > 4
ORDER BY Sch.name ASC, Tb.name ASC, C.name ASC
Этот скрипт извлекает всю информацию, которая мне требуется для каждой таблицы, которую я имею в своей БД.Затем у меня есть другой скрипт, который я вручную ввожу в таблицу и столбцы, из которых мне нужна информация.
SELECT 'Numeric Count' AS CounterType
, MAX(LEN(CAST(FLOOR(beca_proy_precio) AS VARCHAR(38)))) AS '1'
, MAX(LEN(CAST(FLOOR(beca_proy_precio_dol) AS VARCHAR(38)))) AS '2'
, MAX(LEN(CAST(FLOOR(beca_proy_tc) AS VARCHAR(38)))) AS '3'
FROM Comercial.beca_proyectada
UNION ALL
SELECT 'Decimal Count' AS CounterType
, MAX(LEN(CAST(REVERSE(STUFF(CAST(beca_proy_precio % 1 AS VARCHAR(38)), 1, 2, '')) AS DECIMAL(38, 0)))) AS '1'
, MAX(LEN(CAST(REVERSE(STUFF(CAST(beca_proy_precio_dol % 1 AS VARCHAR(38)), 1, 2, '')) AS DECIMAL(38, 0)))) AS '2'
, MAX(LEN(CAST(REVERSE(STUFF(CAST(beca_proy_tc % 1 AS VARCHAR(38)), 1, 2, '')) AS DECIMAL(38, 0)))) AS '3'
FROM Comercial.beca_proyectada
Что он делает, так это получает самое длинное НЕ БОЛЬШОЕ (целые и десятичные части по отдельности) числовое значение в столбцахуказано.Затем возвращается длина самого длинного целого и десятичного числа.
Например: строка 1 - 940.34910 => 3 целых числа, 4 десятичных знака Строка 2 - 1.1304902 => 1 целых чисел, 7 десятичных знаков
Следовательно, в этом случае он вернет 3 для самого длинного целого числа и 7 для самого длинного десятичного числа
Наконец, чтобы уточнить, что я хочу сделать, это: Присоединитесь к 2 сценариям, где 2-й сценарий получитзначения для каждой таблицы / столбца, которые возвращает 1-й сценарий ... и выводит что-то вроде этого:
Схема / Таблица / Столбец / Тип / Максимальная длина / Точность / Масштаб / Самый длинный целое / Самое длинное десятичное число
Заранее благодарим за любую предоставленную помощь !!