mysql - 如何在 MySQL 过程中获取 ENUM 的值

标签 mysql enums procedures

在我看来,枚举在 MySQL 中被破坏了,至少在版本 5.0.51a-24+lenny5 (Debian) 上是这样。我有一个简单的查找表,其中包含一个枚举字段:

CREATE TABLE `FrameworkServices` (
  ...
  `DNSType` enum('IP','CNAME') NOT NULL,
  ...
)

临时,我可以毫无问题地运行以下命令:

SELECT DNSType, CNameOrIP INTO @hackEnum, @ipAddress
FROM FrameworkServices WHERE FrameworkTypeId = 1 LIMIT 1;
SELECT @hackEnum, @ipAddress;

但是,如果我将完全相同的代码放入过程中,@hackEnum 返回空(不为 null,至少通过 TOAD)。

我尝试选择 DNSType+0、CONCAT(DNSType,'') 以及其他似乎对枚举有效的内容,结果是相同的: 我阅读的每一篇文章都是临时的,但在过程中返回空!

我什至尝试使用局部变量并将 hackEnum 定义为相同的 ENUM 类型。

最佳答案

我遇到了完全相同的问题 - 我正在检索一个 ENUM 值,然后通过 IF...ELSE...END IF 检查它。它不起作用,让我抓狂,不知道为什么。解决方案是选择 char(1),然后将 ENUM 列值视为字符串:

DECLARE use_free CHAR(1);

SELECT use_free INTO use_free FROM ...;

IF use_free = '1' THEN
  <do something>
ELSE
  <do something else>
END IF;

我第一次使用:

DECLARE use_free ENUM('0','1');

虽然技术上是正确的,但失败了。希望这对您有帮助。

关于mysql - 如何在 MySQL 过程中获取 ENUM 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737137/

相关文章:

mysql - 数据模型: Having separate table for a field vs having it as a column in the main table

java - 开启和关闭 togglz 功能的单元测试

swift - 您如何在快速枚举中处理某些情况下具有默认值而其他情况下具有动态值的情况?

postgresql 过程/触发器

php - 在 php 编码中将 php 连接到下拉列表

php - WordPress 无法存储非英文字符

mysql - Spring boot - h2和mysql的配置文件

mysql - MySQL 的版本与 Distrib 数量

scheme - 如何在 Racket 中使用附加贴图(方案)

NetLogo:在设置中选择一个程序?