将 TINYINT(1) 转换为字符串

Posted

技术标签:

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

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

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

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

【问题讨论】:

有,但何必呢?值达到PHP后才转换,更简单,更经济,不会导致你把部分业务逻辑放到SQL查询中(不利于维护)。 【参考方案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 ...

【讨论】:

以上是关于将 TINYINT(1) 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Postgresql 布尔值转换为 MySQL Tinyint?

MySQL 转换为 TINYINT

SQL 函数:将变量从 varchar 转换为 tinyint

ODBC 链接表将 Tinyint 字段转换为是/否

将数据类型 int 转换为 tinyint 时出错

tinyint用java转化为int的坑