如何在 SQL 中将值显示为 Y 或 N?

Posted

技术标签:

【中文标题】如何在 SQL 中将值显示为 Y 或 N?【英文标题】:How to display values as Y or N in SQL? 【发布时间】:2018-06-05 11:32:57 【问题描述】:

我正在为中美洲的一家小型诊所创建一个数据库。该数据库有一个“访问”表,其中包含一系列是或否问题的数十个字段。

我知道在 SQL 中存储二进制值的最佳(最简单、最有效)方法是使用位数据类型 (x),但是我知道我也可以将 char(1) 数据类型用于“Y”或"N" 以使用更多空间为代价 (x)。

最初,我计划使用 bit 数据类型并将 1 存储为是,将 0 存储为否,但是我不知道如何在 php.ini 中将此显示为 Y 或 N。

目前,在一个单独的表中,我将 HIV 和糖尿病的值存储为 0 或 1,并且我在 SQL 选择语句中对两个单独的表执行内部联接,分别为 1 到 Y 和 0 到 N。

如果我要继续使用这种技术,那么我将需要制作数十张将 1 与 Y 以及 0 与 N 相关联的表。这似乎效率低下且非常多余。

有没有办法将一个表的多个列关联到一个关联 1 到 Y 和 0 到 N 的表?我正在使用 PHPmyadmin。

【问题讨论】:

是的,您可以从尽可能多的表中获得尽可能多的列,以引用同一个“查找”表;不需要特殊的语法。也就是说,您也可以只使用简单的表达式来选择此类字段,而不是彻底解决二值查找表的麻烦。 SELECT CASE someField WHEN 1 THEN 'Y' ELSE 'N' END AS someFieldYN 另外,我可能不会打扰 BIT 类型。 TINYINT 可能不会占用明显更多的空间(如果有的话),并且可能会更容易使用。 echo $row['field'] ? 'Y' : 'N' 如果您要创建YN 值的输出列,请不要。很难阅读。更好的是“是”和“否”——因为它们的宽度不同。或“是”和空白,或空白和“否”。或者... 【参考方案1】:

说实话,您不必为小型诊所争先恐后地节省表空间。以最容易维护的方式编写程序。

使用位而不是更简单的列类型可以节省数万字节。 (=无法衡量)。

如果您使用任何类型的 int(tinyint?),您可以在查询中翻译成文本。

 SELECT IF(column=1,'Sí','No') column

例如。

【讨论】:

【参考方案2】:

我会使用布尔数据类型来保存状态(如果您不想更改,也可以使用 1 和 0)并使用 php 转换真或假值以显示真 Y 和假N 当用户想要看到这样的结果时:

<?php

 $stateFromDB; //Get it from db
 if($stateFromDB == true)
    echo "Y";
 else
    echo "N";
 

?>

【讨论】:

以上是关于如何在 SQL 中将值显示为 Y 或 N?的主要内容,如果未能解决你的问题,请参考以下文章

您如何修改默认值以接受 Y 或 N 而不仅仅是 SQL 中的 Y

如何在 SQL Server 中将函数设置为默认值?

如何在熊猫数据框中将单元格设置为 NaN

如何在 Java 中将纬度和经度转换为 x,y?

如何在 Angular 中将 csv 或 excel 文件转换为 sql 输入数组?

sql 在Audit Detail.sql中将Redalerts Y转换为N,将N转换为Y.