【问题标题】:How do I cast ENUMs to their integer values when selecting into an outfile in MySQL?在 MySQL 中选择 outfile 时,如何将 ENUM 转换为整数值?
【发布时间】:2012-07-30 19:19:14
【问题描述】:

描述基本上就是问题。

我有一个 CSV 文件,我将它加载到我的数据库中的一个表中。然后,我 (SELECT * FROM tablename into OUTFILE '...') 并检查两个 CSV 是否相等。我这样做是为了确保正确加载数据库。

我的问题是其中一个字段是 ENUM 类型。我用来加载表的 CSV 包含整数表示(出于我无法控制的原因),而输出文件 CSV 包含字符串表示。创建输出文件时,我有什么办法可以将 ENUM 转换为其整数值?我觉得这应该是一件容易的事,但我无法在谷歌上找到答案。

注意:我必须为许多不同的表执行此操作,因此我很难单独处理每个表。

【问题讨论】:

    标签: mysql sql csv enums


    【解决方案1】:

    您需要使用数字上下文来获取枚举的整数值。试试这个:

    SELECT ..., enum_field+0, ...
    

    这将在数字上下文中评估 enum_field,这将返回索引值。

    【讨论】:

    • 好的,谢谢,这个解决方案有效。但是,我正在尝试自动为多个表执行此操作,并且这样做需要我将每个表与下一个表区别对待。 (即 SELECT ... table1_enum_field ...)然后是另一个带有 SELECT ... table2_enum_field ... 的语句有没有办法更好地自动化这个?
    • @nikhil.narula 不幸的是,我不知道有一种方法可以自动测试字段类型,然后对 select 中的字段应用不同的操作(例如在 case 语句等中)。如果您将其编写为多行 SQL 脚本,您可能会查看信息模式数据以获取有关行类型的信息,然后对那些枚举的文件名执行上述操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 2022-01-07
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多