gpt4 book ai didi

mysql - 案例值(value)声明

转载 作者:行者123 更新时间:2023-11-29 13:37:56 25 4
gpt4 key购买 nike

下面的查询给出了结果,即无论 value1 在哪里,都会更改为changeValue1

select case 1 when person ="value1" then "changeValue1"
when person="value2" then "changeValue2"
else person end as nickname
from person;

下面的查询不会将 value1 和 value2 更改为相应的“then”值

select case 2 when person ="value1" then "changeValue1"
when person="value2" then "changeValue2"
else person end as nickname
from person;

我知道它只是因为情况 1 和情况 2。任何人都可以解释一下这个函数是如何工作的

最佳答案

一般说明

有两种类型的 case:CASE 之后有值和没有值。

  1. CASE 值 WHEN [compare_value] THEN 结果 [WHEN [compare_value] THEN 结果 ...] [ELSE 结果] END

它将 case 之后的值与可能值的列表进行比较:

mysql> SELECT CASE 1 WHEN 1 THEN 'one'
-> WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'

此版本将 case 之后的值与 WHEN 之后给出的值进行比较。

2. CASE WHEN [条件] THEN 结果 [WHEN [条件] THEN 结果 ...] [ELSE 结果] END

mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
-> 'true'

此版本将返回第一个 true 条件后的值。

由于您使用的是第二个版本,因此不需要输入 1 或 2。

调查您的代码如何工作

在您的情况下,您会得到 1 的正确结果,因为它尝试将第二类型查询转换为第一类型。它计算表达式并将结果与​​ 1 进行比较。1 和 TRUE 是相同的值,这就是它起作用的原因。

当您输入 2 时,它总是转到 ELSE 分支,因为 2 既不是 TRUE 也不是 FALSE。如果您尝试设置 0 而不是 2,它将给出第一个 false 表达式的结果:

mysql> SELECT CASE 0 WHEN 2<0 THEN 'true' ELSE 'false' END;
+----------------------------------------------+
| CASE 0 WHEN 2<0 THEN 'true' ELSE 'false' END |
+----------------------------------------------+
| true |
+----------------------------------------------+

关于mysql - 案例值(value)声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526063/

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