gpt4 book ai didi

mysql - 如何在参数之间组合多个

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:56 26 4
gpt4 key购买 nike

我想在表格中创建一个额外的列。目的是为所有邮政编码在 2900 和 3199 或 2600 和 2699 之间的行提供值“Omgeving Rotterdam”,所有其他邮政编码“Nederland”以及所有具有空单元格“No Postcode”的行。

我尝试了以下代码(但它给了我“Omgeving Rotterdam in all cells of the added row”)

SELECT *
,case
when (LEFT(Postcode,4) between 2900 AND 3199 OR 2600 AND 2699) then 'Omgeving Rotterdam'
when (LEFT(Postcode,4) IS NOT NULL AND NOT between 2900 AND 3199 OR 2600 AND 2699) then 'Nederland'
else 'Geen Postcode'
end
as 'Komt Uit'
FROM
a
LEFT JOIN
b ON a.ID = b.code
JOIN
c ON c.id_E = a.E_ID

最佳答案

这不是答案。只是为了解释:

when (LEFT(Postcode,4) between 2900 AND 3199 OR 2600 AND 2699) then 'Omgeving Rotterdam'

when LEFT(Postcode,4) between 2900 AND 3199
OR (2600 AND 2699) then 'Omgeving Rotterdam'

2600 确实不是条件,2699 也不是。但是 MySQL 在那里期望一些条件将整数转换为 bool 值(使 0 = false,其他数字 = true)。所以你有:

when LEFT(Postcode,4) between 2900 AND 3199
OR (true AND true) then 'Omgeving Rotterdam'

这仅仅是

when true then 'Omgeving Rotterdam'

这就是为什么您的所有结果都是“Omgeving Rotterdam”。

至于:

when (LEFT(Postcode,4) IS NOT NULL AND NOT between 2900 AND 3199 OR 2600 AND 2699) then 'Nederland'

我认为这应该引发错误。我不知道 mySQL 的解析器对 AND <nothing> NOT between 2900 AND 3199 做了什么.

关于mysql - 如何在参数之间组合多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50853913/

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