【问题标题】:Converting TINYINT(1) to a string将 TINYINT(1) 转换为字符串
【发布时间】:2014-06-17 01:08:51
【问题描述】:

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

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

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

【问题讨论】:

  • 有,但何必呢?值达到PHP后才转换,更简单,更经济,不会导致你把部分业务逻辑放到SQL查询中(不利于维护)。

标签: php mysql string tinyint


【解决方案1】:

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

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

【讨论】:

  • 看来,paid=0 THEN 'Yes' 应该是 paid=0 THEN 'No',反之亦然。
  • 谢谢。出于某种奇怪的弗洛伊德式原因,我总是反其道而行之。
【解决方案2】:

您可以使用IF

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

或者:

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

或者你可以根据数据使用&lt;&gt;等。

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 2016-09-14
      • 1970-01-01
      • 2021-07-20
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多