Как извлечь имя и тип столбца из MySQL? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующая таблица:

CREATE TABLE `orders` (
  `orders_id` int(11) NOT NULL AUTO_INCREMENT,
  `external_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `id` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `company` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `street_address` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `suburb` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
...
)

Я хочу получить столбцы и набрать как один столбец Name : Type, примерно так:

orders_id:int(11),
external_id:bigint(20),
id:int(11),
...

Это должно быть что-то вроде:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_schema' AND TABLE_NAME = 'orders';

Я не уверен, как получить тип и как преобразовать его в желаемый вывод

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Используйте этот запрос:

SELECT
    concat(COLUMN_NAME, ':', DATA_TYPE, IF(NUMERIC_PRECISION, CONCAT('(', NUMERIC_PRECISION, ')'), IF(CHARACTER_MAXIMUM_LENGTH, CONCAT('(', CHARACTER_MAXIMUM_LENGTH, ')'), ''))) as name
FROM
    INFORMATION_SCHEMA.COLUMNS;

Результат:

+----------------------+
| name                 |
+----------------------+
| id:int(10)           |
| co_id:int(10)        |
| EVP_type:varchar(255)|
| date:date            |
+----------------------+
0 голосов
/ 04 октября 2018

используйте запрос ниже

SELECT SELECT concat(concat(concat(column_name,':'),data_type),',') as columnval
FROM information_schema.columns where TABLE_SCHEMA = 'my_schema' AND TABLE_NAME = 'orders'

РЕДАКТИРОВАТЬ: (по Гордону)

Если вышеприведенное является своего рода правильным, оно должно быть записано как:

SELECT concat(column_name, ':' data_type ',') as columnval
FROM information_schema.columns 
WHERE TABLE_SCHEMA = 'my_schema' AND TABLE_NAME = 'orders';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...