2014-04-30 81 views
0

我想将TINYINT(1)的值转换为字符串。 假设订阅费用等于1(或者真),那么当我从我的MySQL数据库检索到我的.php文件时,结果将是“是”。 如果订阅paid = 0(或错误)结果将是“否”。将TINYINT(1)转换为字符串

有没有办法将TINYINT(1)的值转换为包含我选择的单词的字符串?

我很抱歉,如果我是间接的,或者有关问题的详细信息需要

+1

有,但为什么打扰?在值到达PHP之后,只需将其转换为PHP,这更简单,更经济,并且不会导致将部分业务逻辑放入SQL查询中(对维护不利)。 – Jon

回答

2

由于MySQL不提供任何像样的机制,以防止插入-133TINYINT专栏中,我会简单地测试对零/非零:

SELECT CASE 
    WHEN paid<>0 THEN 'Yes' 
    WHEN paid=0 THEN 'No' 
    ELSE 'Unknown' 
END is_paid 
FROM suscription 

的问题也被标记为PHP 。我认为尽可能使用原生类型更清洁:

if (is_null($row['paid']) { 
    $paid = null; 
}else{ 
    $paid = $row['paid']!=0; 
} 

显示时显示正确的字符串应该很简单。

+0

看来'有偿= 0那么'是'应该是'付= 0然后'否'',反之亦然。 –

+0

谢谢。对于一些奇怪的弗洛伊德理由,我总是反过来这样做。 –

1

应该工作:

$number = 1; // or 0 - basically your MySQL variable 
$word = $number ? "yes" : "no"; 

或者:

SELECT IF(`column` = 1, 'yes', 'no') FROM `table_name` 
1

你可以在PHP中做到这一点,在你的MySQL查询中执行:

SELECT IF(`column_name` = 1, 'yes', 'no') FROM ...