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 回答