名前列を変更して小文字にしたいのですが、他のすべての列も選択したいです。各列の名前を書かなくてもこれを行う方法はありますか。
私はこのようなことをしようとしています:
SELECT *, lcase(name) AS name FROM table;
すべての列名を書き出す代わりに、次のようにします。
SELECT lcase(name) AS name, zip, address, age, birthday, etc FROM table;
これは可能ですか?
できませんが、1 つのオプションはビューを使用することです。
create view table_with_lower_name as
select lcase(name) AS name, zip, address, age, birthday, etc
from table;
一度定義すると (つまり、これは 1 回限りの create ステートメントです)、次のように簡単に使用できます。
select * from table_with_lower_name;
ビューを使用する場合、変更された列 (ここのように) を更新できないなど、いくつかの注意点がありますが、うまくname
いく可能性があります。
あなたのスニペットはそのまま機能します!ただしselect *
、悪いフォームと見なされ、パフォーマンス ヒットになる可能性があります。
わかりやすくするために、テーブル エイリアスを使用することもできます。
SELECT t.*, lcase(t.name) AS name FROM table t;
いいえ、すべての列を明示的にリストする以外に、1 つを除いてすべての列を選択する表記法はありません。
(実際には動的 SQL を使用することは可能ですが、実際にはそうしたくありません。)