我正在使用Kohana框架,我需要将列名转换为小写。我无法控制db表结构。我想做以下事情:
SELECT LOWER(*) FROM .....
但是MYSQL并不喜欢这样。如果我不知道列名是什么,那么输出小写列名的正确方法是什么?
答案 0 :(得分:4)
在此处找到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;