mysql - 将表与数据库中的 BOOLEAN 进行比较

标签 mysql sql database boolean create-table

我正在尝试比较我数据库中不同表的 2 列,通过这段代码它可以工作,但它打印“1”表示真,“0”表示假。我希望它打印的是 TRUE 和 FALSE 作为单词。我知道在下面的第二个代码中,TRUE 和 FALSE 的引号丢失了,但是如果我把它们放在一起,我会收到警告。你能帮我解决吗?我只想显示 TRUE 或 FALSE,而不是“1”和“0”。

SELECT s.solution_number, a.choice_answer, 
case when s.solution_number = a.choice_answer then 'TRUE' else 'FALSE' 
         END  as correct_answer
FROM solution s 
INNER JOIN answers a  on s.exercise_id_fk=a.exercise_id_fk;


UPDATE answers a 
INNER JOIN solution s  on s.exercise_id_fk=a.exercise_id_fk 
set a.correct_answer = case 
     when s.solution_number = a.choice_answer then TRUE else FALSE END
where s.exercise_id_fk=a.exercise_id_fk;

这些是我的表格:

CREATE TABLE solution(
    exercise_id_fk INT,
    solution_number INT,
    FOREIGN KEY(exercise_id_fk) REFERENCES exercises(exercise_id)
);

CREATE TABLE answers(
    exercise_id_fk INT,
    student_id INT,
    choice_answer INT,
    correct_answer BOOLEAN,
    FOREIGN KEY(exercise_id_fk) REFERENCES exercises(exercise_id)
);

最佳答案

与人类历史上的每一种编程语言一样,TRUE 和 FALSE 是 1 和 0。MySQL 将它们解释为数字,您不能通过某些配置将它们打印为“TRUE”或“FALSE”。你可以做的是:

SELECT IF(col = 1, 'TRUE', 'FALSE') AS correctAnswer
...

关于mysql - 将表与数据库中的 BOOLEAN 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51877514/

相关文章:

database - PostgreSQL 时间戳字段中的数据损坏

mysql - MySQL 中的二进制日志记录

php - M2ePro frensh 安装上的 Pdo 查询异常

PHP LIKE 不起作用

mysql - 在内部联接上选择特定列的不同列

c# - 根据一个文本框值从数据库自动填充文本框

MySQL合并两列并添加到一个新列中

mysql - 以更简单的方式获取每个组的最新元素(most recent elements)

php - 无法使用 PHP PDO 查询 MS Access 数据库中保存的查询

database - MS access 2010 中的 web DB 将用户登录保存到全局变量中