- ベストアンサー
列名を式で指定することはできますか。
列名を式で指定することはできますか。 例えば、 SELECT `CONCAT('名', '前')` FROM `顧客` みたいなことがしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ということは、PHPやPerl、その他のプログラムからの発行でなくて、コンソールですよね。 SQLでの表現は無理だと思います。 ちなみにWindowsの場合だと、コンソール上で C:\>set hoge=c1 C:\>mysql -uユーザー名 -pパスワード -Dデータベース名 -e "select %hoge% from table" でmysqlにログインせずに発行結果が得られますので、代用になるかもです。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
>実際にやりたい事はもう少し複雑でIF()など他の関数も多用した大きな式 SQLに向かない操作を、無理矢理、SQLでやらせようとしていませんか? >その最終的な戻り値を列名として利用したいというものです。 式 AS 別名 で名前を付け、別名で参照できればいいだけの話のようにも読み取れますが? 名前の有効範囲は、RDBMS、バージョンによって異なるので、MySQL 4.1、MySQL 5.0、MySQL 5.1といったレベルまでは最低限提示するようにしてください。
お礼
こんにちは。 SQLに向かない操作を、無理やりSQLでやらせているかもしれません。 この問題は、すでに別の方法で対処したので、興味本位の質問になりますが、どうにかすれば出来るのでしょうかね。 例えば`名前`という列があった場合、 SELECT `名前` FROM `顧客`; とやらずに、 SELECT `CONCAT('名', '前')` FROM `顧客`; のようなことをしたいです。 これだとエラーになってしまいますが、 すなわちCONCAT()の戻り値である"名前"という文字列を列名として指定するにはどうするのですか。 バージョンは最新のSQLがいいですかね。古い手法を教わったら、また聞きに来る羽目になるので^^;
お礼
こんばんは、ご回答ありがとうございます。 コンソールで出来ることは、他のプログラムでも出来るのですよね。 実際にやりたい事はもう少し複雑でIF()など他の関数も多用した大きな式で、その最終的な戻り値を列名として利用したいというものです。 しかし、今回の質問に対しては無理という回答が頂けたので私は満足です^^ これでスッキリした気持ちで、別の方法の検討に進めます!