2017-10-21 6 views
0

MySQLで非常に単純な作業であると思われていました。アンダースコアを除去し、小文字のMySQLselectクエリ列名に変換します

フィールドA_IdA_Nametable Aがあります。

MySQLのクエリ - SELECT * FROM A;

はもちろん、出力では、列名はA_IdA_Nameです。しかし、私はそれらをaidaname、つまりとし、すべてのアンダースコアを削除して、カラム名だけを小文字に変換します。

私はこれが可能であるべきだと思います。どんな助言/提案も感謝しています。

編集: なぜこれを行う必要がありますか?

私はElasticSearch内のすべてのこれらのフィールドをインデックス化して、春データの弾性を利用して照会しているが、フィールド名

にアンダースコアがある場合に名前付きクエリを使用することが困難になる私はいくつかの答えを見て回るが、それらのすべてでしたALTERステートメントか、REPLACEを使用してフィールド値を操作していますが、どちらも私の用途には適していません。

感謝:)

答えて

1

あなたが出力に列名を変更するにはASキーワードを使用する必要があります。

SELECT A_Id as aid, A_Name as aname 
FROM A; 

すべての列に自動的にこれを実行する簡単な方法はありませんが、あなたはリストする必要があります各列は具体的に自動化する唯一の方法は、INFORMATION_SCHEMA.COLUMNSを照会することによってクエリを動的に作成したストアドプロシージャを記述することです。

のようなものが含まれる列を取得するクエリ:私は私のテーブルの列の数十を持っているので、 `AS`を避けるためにしようとしていた

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

。私は前にストアドプロシージャを書いていない、あなたはいくつかの有用なリンクを指してくれますか?ありがとうございます:) – Anusha

+0

なぜこれを行う必要がありますか?列名をそのまま使用するのはなぜですか? – Barmar

+0

Google "mysqlストアドプロシージャチュートリアル"といくつかのサイトがあります。 – Barmar

関連する問題