2

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

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

如果我是间接的或需要有关该问题的更多信息,我很抱歉

4

3 回答 3

3

鉴于 MySQL 没有提供任何体面的机制来防止插入-133进入TINYINT列,我将简单地针对零/非零进行测试:

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;
}

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

于 2014-04-30T16:02:00.547 回答
2

您可以使用IF

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

或者:

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

或者您可以根据数据使用<或等。>

于 2014-04-30T15:57:09.677 回答
1

您可以在 PHP 中执行此操作:

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

或者,在您的 MySQL 查询中执行此操作:

SELECT IF(`column_name` = 1, 'yes', 'no') FROM ...
于 2014-04-30T15:57:40.897 回答