Имена столбцов в нижнем регистре при использовании SELECT


Я использую фреймворк Kohana, и мне нужно преобразовать имена столбцов в нижний регистр. Я не контролирую структуру таблиц БД. Я хочу сделать следующее: SELECT LOWER(*) FROM .....

Но MYSQL это не нравится. Как правильно выводить имена столбцов в нижнем регистре, если я не знаю, какими будут имена столбцов?

1 4

1 ответ:

Найдено здесь http://dev.mysql.com/doc/refman/5.0/en/columns-table.html

SELECT LOWER(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'Table'

Ниже вы можете увидеть синтаксис MSSQL и MySQL для создания динамического запроса, используя результаты столбца из запроса выше.

Синтаксис MSSQL


DECLARE @ColumnNames [nvarchar](1024)

SELECT @ColumnNames = COALESCE(@ColumnNames + ', ', '') + LOWER(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Table'

DECLARE @Sql [nvarchar](1024) = 'SELECT ' + @ColumnNames + ' FROM Table ' --Remember to put spaces after SELECT and before FROM

EXEC(@Sql)

С его помощью вы динамически строите запрос и затем выполняете его.

Синтаксис MySQL


SELECT @ColumnNames := GROUP_CONCAT(LOWER(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Table';

SET @Sql = CONCAT('SELECT ', @ColumnNames, ' FROM Table ');

PREPARE stmt1 FROM @Sql;
EXECUTE stmt1;