将表与数据库中的 BOOLEAN 进行比较
Compare tables with BOOLEAN in database
我正在尝试比较我数据库中不同表的 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
...
我正在尝试比较我数据库中不同表的 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
...