1

テーブル「A」から値を取得して、「ステータス」列の値をチェックし、数値ではなく意味のある情報を出力したいと考えています。

例えば、

ステータスが 0 の場合は、0 ではなく「アクティブ」と表示します

ステータスが 1 の場合は、1 ではなく「非アクティブ」と表示します

ステータスが 2 の場合は、2 の代わりに「一時停止中」を表示します

現在の結果:

Number     Value     Status
--------   ------    -------
000001     1000      0
000001     1001      1
000001     1002      2

期待される結果:

Number     Value     Status
--------   ------    -------
000001     1000      Active
000001     1001      Inactive
000001     1002      Suspended

私はこの分野に不慣れで、最初の調査を行いましたが、答えが見つかりませんでした。この問題に関するヘルプは本当に感謝しています。

4

3 に答える 3

1

case次のようにステートメント ( http://dev.mysql.com/doc/refman/5.0/en/case.html ) を使用できます。

select Number, Value, 
  case 
    when Status = 0 then 'Active' 
    when Status = 1 then 'Inactive' 
    when Status = 2 then 'Suspended' 
  end as Status 
from A;
于 2013-07-31T01:30:29.367 に答える
0

テーブル スキーマを制御する場合は、列をENUM型としてキャストすることを検討してください。

CREATE TABLE `A` (
    `Number` INT(6) ZEROFILL NOT NULL DEFAULT 0,
    `Value` INT(4) ZEROFILL NOT NULL DEFAULT 0,
    `Same` ENUM('Active', 'Inactive', 'Suspended') NOT NULL DEFAULT 'Inactive'
);

アプリケーション層で変換しようとするのではなく、リテラルで値を設定できるようになりました。ENUM は VARCHAR/CHAR 列のようにメモリ/ディスクを消費しないので、心配する必要はありません。

于 2013-07-31T01:39:02.587 に答える
0

または、PHP を使用する場合

$result = mysqli_query("SELECT * FROM table");

while($row = mysqli_fetch_array($result)){
  if($row['status'] == 0) $status_string = 'Active';
  if($row['status'] == 1) $status_string = 'Inactive';
  if($row['status'] == 2) $status_string = 'Suspended';
  echo $row['number'].', '.$row['value'].', '.$status_string;
}
于 2013-07-31T01:34:33.183 に答える