如何在 MySQL CASE 表达式中使用“OR”条件?

2024-03-25

我有一个包含 CASE 表达式语句的过程,如下所示:

BEGIN
....
WHILE counter < total DO
....

 CASE ranking
  WHEN 1 OR 51 OR 100 OR 167 THEN SET
   project_name = 'alpha';
  WHEN 2 THEN SET
   project_name = 'beta';
  WHEN 10 OR 31 OR 40 OR 61 THEN SET
   project_name = 'charlie';
  ....
  ELSE SET
   project_name = 'zelta';
 END CASE;

 INSERT INTO project (id, name) VALUES (LAST_INSERT_ID(), project_name);
 SET counter = counter + 1;

END WHILE;
END
$$
DELIMITER ;

当我调用上述过程时,情况如下OR语句要么完全跳过,要么仅匹配列表中的第一项。我究竟做错了什么?


CASE ranking
  WHEN 1 THEN 'alpha' 
  WHEN 2 THEN 'beta'  
  WHEN 10 THEN 'charlie' 
  ELSE 'zelta' 
END CASE;

您可以使用 WHEN 所具有的表达式之一,但不能混合使用这两个表达式。

1) WHENwhen_表达式 是使用简单 CASE 格式时与 input_expression 进行比较的简单表达式。 when_expression 是任何有效的表达式。 input_expression 和每个when_expression 的数据类型必须相同或者必须是隐式转换。

2) WHEN 布尔表达式 使用搜索的 CASE 格式时计算的布尔表达式。 Boolean_expression 是任何有效的布尔表达式。

你可以编程:

1)

 CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'

2)

CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END

但无论如何,您都可以预期变量排名将在布尔表达式中进行比较。

http://msdn.microsoft.com/en-us/library/ms181765.aspx http://msdn.microsoft.com/en-us/library/ms181765.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 MySQL CASE 表达式中使用“OR”条件? 的相关文章

随机推荐

  • 在以破折号开头的目录中查找

    find将文件名开头的破折号解释为选项的开头 使用熟悉的 技巧不起作用 因为选项位于文件名之后 引用无效 并将第一个破折号替换为 也不行 通常鼓励用户在此类文件名之前添加 但是如果我不知道给定的路径是绝对路径还是相对路径 我该怎么办 编辑
  • rdstate 和 rdbuf 中的 rd 代表什么?

    C 标准I O库中有两个名称 rdstate and rdbuf 我知道 state 和 buf 但是 rd 是什么 PS 我相信我知道如何使用rdstate and rdbuf 不要教我那个 我认为它们代表 read 类似于大多数人使用
  • 如何使用 dbus-send 调用 org.bluez.Adapter1.StartDiscovery?

    我正在尝试使用 Bluez 5 44 进行交互dbus send https dbus freedesktop org doc dbus send 1 html命令行工具 我似乎无法让它正确启动发现 尽管当我使用时它工作得很好bluetoo
  • 使用 POI Apache 从 Excel 读取数据时将数据添加到 ArrayList

    我正在尝试使用 POI Apache 从 Excel 工作表中读取数据 我遇到的问题是我想同时读取一行中所有单元格的数据并将其存储在 Type Class 的 ArrayList 中 但输出只是逐个单元格 这是打开 Excel 工作表并逐个
  • 从 Windows 媒体库获取目录列表

    有没有什么方法可以以编程方式查找当前在 Windows 媒体库上设置的目录列表 例如 假设我有以下库 我为葡萄牙语表示歉意 但你会明白的 我怎样才能以编程方式获得这些三个目录路径列于视频库 D Filmes D Series D Video
  • 如何使用 Scala 中的任何库将通用潜在嵌套映射 Map[String, Any] 转换为案例类?

    我对反射并没有太多的兴趣 这个答案在某些情况下使用无形的作品 但似乎有很多边缘情况 将 Map String Any 转换为 case 类的无形状代码无法处理可选子结构 https stackoverflow com questions 5
  • 检测全屏模式

    现代桌面版 IE 10 始终是全屏的 有一个居住规范 https dvcs w3 org hg fullscreen raw file tip Overview html for fullscreenW3 上的伪类 但是当我尝试使用 jQu
  • pandas 中日期时间索引的算术运算

    在 pandas 中 您可以通过基于经典整数位置 行的索引或基于日期时间的索引来访问时间序列的特定位置 可以使用基本算术运算来操作基于整数的索引 例如如果我有一个integer index对于频率为 12 小时的时间序列 并且我想恰好在此之
  • 为什么要在 Java 中的方法参数上使用关键字“final”?

    我不明白在哪里final关键字是really当它用在方法参数上时很方便 如果我们排除匿名类的使用 可读性和意图声明 那么它对我来说几乎毫无价值 强制某些数据保持不变并不像看起来那么有力 如果参数是原语 那么它将没有任何效果 因为参数作为值传
  • 如何优化 FQL 以避免 Facebook 超时?

    我们来举个简单的FQL查询以获取自昨天以来用户的朋友共享的所有链接 例如 SELECT link id title url owner created time FROM link WHERE created time gt strtoti
  • 从复选框输入 PHP 表单将多个项目插入到一个 ID MySQL

    I badly needed this solution Here is the image what I will checked 这是订单 ID 它对于所有问题标题都是通用的 它将像这样插入 这是我使用的代码 if isset POST
  • Google API 发送带有附件的电子邮件 - REST API 调用 Postman

    我想通过 Google API 创建电子邮件 消息 用户消息发送 https developers google com gmail api reference rest v1 users messages send 我设法使用此端点创建了
  • 处理数据库模式中的更改

    我正处于构建应用程序的初始阶段 该应用程序有望以 1000 的价格出售 更有可能的是数百 但无论哪种方式都足以引起数据库架构更改的严重头痛 我相当受限于 windows net sql 服务器环境 因为我们的许多客户将自行托管我在他们的网络
  • Java RMI 资源

    我目前正在进行一个涉及广泛使用 Java RMI 的项目 我想知道是否有人知道有关它的任何好的资源 我目前找到的材料所遇到的问题是它通常已经过时 如 Java 1 3 和 或半完整 我什至很乐意买一本关于它的书 但在亚马逊上看 所有的书都已
  • 通过 apache modwsgi 运行时如何制作 Bottle 打印堆栈跟踪?

    当 Bottle 作为独立服务器运行时 这很容易做到 from bottle import run Bottle run app app host config get bottle host localhost port config g
  • FILAB VM 与 Cosmos 全局实例之间的连接问题

    我遇到了问题中讨论的相同类型的连接问题 Cygnus 无法在 Cosmos 全局实例上保留数据 https stackoverflow com questions 33674713 cygnus can not persist data o
  • 如何修复此错误:结构“Utf8”为空。不推荐使用对空结构的支持...使用 Opaque 代替

    我最近在运行我的应用程序时开始收到此错误 它似乎并没有影响一切 但它在日志中非常嘈杂和烦人 我没有更改任何内容或向我的应用程序添加任何内容 这会导致类似的情况 我最近做的唯一一件事就是升级到 Flutter 的最新版本 我经常升级 所以距离
  • 查看 Intellij 项目中的错误[重复]

    这个问题在这里已经有答案了 我使用的是 Intellij 版本 8 如何查看整个项目的警告或错误 UPDATE See 这个答案 https stackoverflow com a 19366569 104891这是最新的 这里最初的答案是
  • 如何从 Mono 证书存储“我的”和“信任”中删除/删除证书?

    我已在 Linux 中使用以下命令将证书添加到 Mono 3 2 8 存储中 certmgr add c m My mycert cer 添加的证书可以通过以下方式查看 certmgr list c m My mycert cer 使用以下
  • 如何在 MySQL CASE 表达式中使用“OR”条件?

    我有一个包含 CASE 表达式语句的过程 如下所示 BEGIN WHILE counter lt total DO CASE ranking WHEN 1 OR 51 OR 100 OR 167 THEN SET project name