SQL-запрос для имени поля, типа поля и значения поля

Допустим, у меня есть таблица, как показано ниже

pp_refno   pp_rectype   _pp_account  pp_empid   pp_dept
---------------------------------------------------------
90221      contractor    061509864   C00001121  1111000139

Можно ли написать запрос, чтобы данные возвращались в этом формате?

field_name          field_type     field_value
---------------------------------------------------------
pp_refno            int             90221
pp_rectype          char            contractor
pp_account          char            061509864
pp_empid            char            C00001121 
pp_dept             char            1111000139

2 ответа

Да, это возможно при использовании информационной схемы базы данных, которую вы используете. Однако вам нужно добавить 1 столбец, чтобы иметь возможность использовать это для нескольких строк:

field_name          field_type     field_value        pp_refno
--------------------------------------------------------------
pp_refno            int             90221             90221
pp_rectype          char            contractor        90221
pp_account          char            061509864         90221
pp_empid            char            C00001121         90221
pp_dept             char            1111000139        90221

Таким образом, вы можете идентифицировать несколько записей.

Также вам придется написать или сгенерировать конкретный запрос для каждой таблицы, который может быть большим и медленным из-за того, как работают данные.

Если вы просто извлекаете отдельные строки, вы также можете использовать хранимую процедуру для отображения ваших данных заданным способом.

Вы можете использовать функцию UNPIVOT SQL-запроса для достижения этого поведения. Ниже ссылка дает вам больше идей с похожим примером.

Пример Stackru Ссылка

Чтобы прочитать тип столбца, вам нужно объединить таблицы sys и получить типы столбцов.

SELECT DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
 TABLE_NAME = 'yourTableName' AND 
 COLUMN_NAME = 'yourColumnName'

Как только вы получите псевдоним unpivot-таблицы, вы сможете присоединить его к таблице SCHEMA.columns и реализовать свою логику

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