消除下划线并转换为小写MySQLselect查询列名

消除下划线并转换为小写MySQLselect查询列名,mysql,Mysql,我被MySQL中看似非常简单的任务所困扰 我有一个表a,其中包含a\u Id和a\u Name字段 MySQL查询-SELECT*FROM A 显然,在输出中,列名是A_Id和A_Name。但我希望它们是aid和aname,也就是说,消除所有下划线,只将列名转换为小写 我认为这应该是可能的。欢迎提供任何帮助/建议 编辑: 我为什么要这样做 我在ElasticSearch中为所有这些字段编制了索引,然后使用Spring Data Elastic进行查询,当字段名称中有下划线时,使用命名查询变得很困

我被MySQL中看似非常简单的任务所困扰

我有一个
表a
,其中包含
a\u Id
a\u Name
字段

MySQL查询-
SELECT*FROM A

显然,在输出中,列名是
A_Id
A_Name
。但我希望它们是
aid
aname
,也就是说,消除所有下划线,只将列名转换为小写

我认为这应该是可能的。欢迎提供任何帮助/建议

编辑: 我为什么要这样做


我在ElasticSearch中为所有这些字段编制了索引,然后使用Spring Data Elastic进行查询,当字段名称中有下划线时,使用命名查询变得很困难

我确实四处寻找了一些答案,但它们要么是
ALTER
语句,要么是使用
REPLACE
操纵字段值,没有一个适合我的用例


谢谢:)

您需要使用
AS
关键字来更改输出中的列名:

SELECT A_Id as aid, A_Name as aname
FROM A;
没有简单的方法可以自动为所有列执行此操作,您需要具体列出每一列。自动化查询的唯一方法是编写一个存储过程,通过查询
信息\u SCHEMA.COLUMNS
动态创建查询

获取列的查询将包括以下内容:

SELECT GROUP_CONCAT(CONCAT(column_name), ' AS ', REPLACE(LOWER(column_name), '_', '')) AS select_list
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'A';

我试图避免
成为
,因为我的表中有几十列。我以前没有写过存储过程,你能指出一些有用的链接吗?。非常感谢:)你为什么要这样做?为什么你不能直接使用列名呢?谷歌“mysql存储过程教程”你会找到一些网站。我在ElasticSearch中索引了所有这些字段,然后使用Spring数据Elastic进行查询,当字段名称中有下划线时,使用命名查询变得很困难。有关动态准备查询的存储过程的示例,请参见。