gpt4 book ai didi

MySQL IF 函数无法识别带有整数的字符

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:16 24 4
gpt4 key购买 nike

我遇到的问题是 MySQL 中的 IF 函数没有正确地告诉我 ID 是否位于第二个表中。在这里你可以看到我在做什么

http://sqlfiddle.com/#!2/501513/4 '

SELECT c.id AS clientID, IF (e.id, 'yes', 'no') AS hasID
FROM Table1 c LEFT JOIN Table2 e ON (c.id = e.id)
WHERE c.id IN ("123456","H100512","94061","OW59556","OR37615");

如果您注意到值“H100512”和“w76789”应该都说"is"而不是“否”,因为它们在第二个表中。我注意到,如果我从查询和表中的 id 中取出字母,那么它会正确地说明它是否存在于表中。我在 IF 函数中做错了什么吗?

最佳答案

当然,我认为将id 声明为varchar() 并使用单引号而不是双引号来分隔字符串会更好.但是,这些都不是问题的原因。

问题是语句:

if(e.id, 'yes', 'no')

在 MySQL 中,这是检查:

if(e.id <> 0, 'yes', 'no')

您可能认为它正在检查 NULL。没有。因此,正在发生的事情是像 'H100512' 这样的字符串被转换为一个整数,并且它被转换为 0,这导致测试失败。

我认为您应该将查询写成:

SELECT c.id AS clientID,
(case when e.id is not null then 'yes' else 'no' end) AS hasID
FROM Table1 c LEFT JOIN
Table2 e
ON c.id = e.id
WHERE c.id IN ('123456', 'H100512', '94061', 'OW59556', 'OR37615', 'w76789');

这在它所做的事情中是明确的,它使用 ANSI 标准条件语句。

关于MySQL IF 函数无法识别带有整数的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com