プロが教える店舗&オフィスのセキュリティ対策術

列名を式で指定することはできますか。
例えば、
SELECT `CONCAT('名', '前')` FROM `顧客`
みたいなことがしたいです。

A 回答 (2件)

ということは、PHPやPerl、その他のプログラムからの発行でなくて、コンソールですよね。


SQLでの表現は無理だと思います。

ちなみにWindowsの場合だと、コンソール上で
C:\>set hoge=c1
C:\>mysql -uユーザー名 -pパスワード -Dデータベース名 -e "select %hoge% from table"
でmysqlにログインせずに発行結果が得られますので、代用になるかもです。
    • good
    • 0
この回答へのお礼

こんばんは、ご回答ありがとうございます。
コンソールで出来ることは、他のプログラムでも出来るのですよね。

実際にやりたい事はもう少し複雑でIF()など他の関数も多用した大きな式で、その最終的な戻り値を列名として利用したいというものです。
しかし、今回の質問に対しては無理という回答が頂けたので私は満足です^^

これでスッキリした気持ちで、別の方法の検討に進めます!

お礼日時:2010/09/06 20:51

>実際にやりたい事はもう少し複雑でIF()など他の関数も多用した大きな式



SQLに向かない操作を、無理矢理、SQLでやらせようとしていませんか?


>その最終的な戻り値を列名として利用したいというものです。

式 AS 別名

で名前を付け、別名で参照できればいいだけの話のようにも読み取れますが?

名前の有効範囲は、RDBMS、バージョンによって異なるので、MySQL 4.1、MySQL 5.0、MySQL 5.1といったレベルまでは最低限提示するようにしてください。
    • good
    • 0
この回答へのお礼

こんにちは。

SQLに向かない操作を、無理やりSQLでやらせているかもしれません。

この問題は、すでに別の方法で対処したので、興味本位の質問になりますが、どうにかすれば出来るのでしょうかね。

例えば`名前`という列があった場合、

SELECT `名前` FROM `顧客`;

とやらずに、

SELECT `CONCAT('名', '前')` FROM `顧客`;

のようなことをしたいです。

これだとエラーになってしまいますが、
すなわちCONCAT()の戻り値である"名前"という文字列を列名として指定するにはどうするのですか。

バージョンは最新のSQLがいいですかね。古い手法を教わったら、また聞きに来る羽目になるので^^;

お礼日時:2010/10/05 14:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!