Как я возвращаю типы данных SQL из своего запроса?

У меня есть SQL-запрос, который запрашивает огромное (как в, сотни представлений/таблиц с твердыми к чтению именами как CMM-CPP-FAP-ADD) база данных, в которой я не нуждаюсь, ни хочу понять. Результат этого запроса должен быть сохранен в таблице подготовки для питания отчета.

Я должен составить таблицу подготовки, но с сотнями представлений/таблиц для рытья до находки типов данных, которые представлены здесь я должен задаться вопросом, существует ли лучший способ создать эту таблицу.

Кто-либо может советовать, как я использовал бы какой-либо из инструментов SQL Server 2008 для предугадывания типов исходных данных в моей базе данных SQL 2000?

Как общий пример, я хочу знать от запроса как:

SELECT Auth_First_Name, Auth_Last_Name, Auth_Favorite_Number 
FROM Authors

Вместо фактических результатов я хочу знать что:

Auth_First_Name is char(25)
Auth_Last_Name is char(50)
Auth_Favorite_Number is int

Я не интересуюсь ограничениями, я действительно просто хочу знать типы данных.

58
задан 21 October 2009 в 19:48

2 ответа

Я использую простой оператор выбора для рендеринга результатов, которые я могу использовать в документах технической спецификации. Этот пример не содержит каждое условие, с которым Вы столкнетесь с базой данных, но это дает Вам хороший шаблон для работы с.

SELECT
     TABLE_NAME          AS 'Table Name',
     COLUMN_NAME         AS 'Column Name',
     CASE WHEN DATA_TYPE LIKE '%char'
          THEN DATA_TYPE + '(' + CONVERT(VARCHAR, CHARACTER_MAXIMUM_LENGTH) + ')'
          WHEN DATA_TYPE IN ('bit', 'int', 'smallint', 'date')
          THEN DATA_TYPE
          WHEN DATA_TYPE = 'datetime'
          THEN DATA_TYPE + '(' + CONVERT(VARCHAR, DATETIME_PRECISION) + ')'
          WHEN DATA_TYPE = 'float'
          THEN DATA_TYPE
          WHEN DATA_TYPE IN ('numeric', 'money')
          THEN DATA_TYPE + '(' + CONVERT(VARCHAR, NUMERIC_PRECISION) + ', ' + CONVERT(VARCHAR, NUMERIC_PRECISION_RADIX) + ')'
     END                 AS 'Data Type',
     CASE WHEN IS_NULLABLE = 'NO'
          THEN 'NOT NULL'
          ELSE 'NULL'
     END                 AS 'PK/LK/NOT NULL'
FROM INFORMATION_SCHEMA.COLUMNS 
ORDER BY 
     TABLE_NAME, ORDINAL_POSITION
1
ответ дан 1 November 2019 в 13:21

sp_describe_first_result_set

поможет определить типы данных запроса путем анализа типов данных первого набора результатов запроса

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql? view=sql-server-2017

3
ответ дан 1 November 2019 в 13:21

Другие вопросы по тегам:

Похожие вопросы: