Имена столбцов в нижнем регистре при использовании SELECT
Я использую фреймворк Kohana, и мне нужно преобразовать имена столбцов в нижний регистр. Я не контролирую структуру таблиц БД. Я хочу сделать следующее:
SELECT LOWER(*) FROM .....
Но MYSQL это не нравится. Как правильно выводить имена столбцов в нижнем регистре, если я не знаю, какими будут имена столбцов?
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;