• ベストアンサー

カラムの値を、条件により動的に決定する方法

単一レコード内において、 Bの値を条件により決定したいのですが可能でしょうか。 <構成> テーブル:hoge カラム:A,B <条件> Aにデータがあれば、Bは"●" Aにデータがなければ、Bは"×" よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

Bがカラムとして存在しなければいけない理由は何でしょう? selectするときにifでデータを作るとか、viewでBカラムに相当するデータを動的に生成するとかではダメなのでしょうか。

Kamen_Ride
質問者

お礼

回答にあるとおりif文で、制御を掛けことになりました。 上司に、指示を受けたのですが、 上司の「やりたいこと」はできないようです。 ご回答ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>AはNULLを許容していません。 >空文字("")がデータが無い状態となります。 であればこんな感じ? UPDATE hoge SET B=IF(A='','×','●'); なお、Aが変更されるたびにBの値を書き変えないと整合性がとれないため 運用時にトリガーなどで調整する必要があるかもしれません。

Kamen_Ride
質問者

補足

>UPDATE hoge SET B=IF(A='','×','●'); アップデート文を使わず、自動で変更はできないでしょうか? 例えば、 INSERT INTO hoge (A) VALUES('aaa'); とした場合 A:'aaa' B:'●' が入っている状態にしたいです。 すみませんが、よろしくお願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

カラムAの型と、NULLを許諾するかどうかによります。 そもそも「データがあれば」というのはどういう状態を前提にしていますか? Aが数値型でNULLを許諾してなければ、データがないということはありえません。 またAが文字列型でNULLを許諾していない場合''であるものをデータがないと 解釈すべきかどうか判断がわかれます 逆にNULLを許諾していてNULLをもってデータがないという認識であれば is nullでチェックができますが、SQLにとってNULLは弊害が多いため あまりお勧めできない状態になるかもしれません。

Kamen_Ride
質問者

補足

>そもそも「データがあれば」というのはどういう状態を前提にしていますか? AはNULLを許容していません。 空文字("")がデータが無い状態となります。 すみませんが、よろしくお願いします。

関連するQ&A