【问题标题】:What type of SQL query do I need to use when my column data type is SET?当我的列数据类型为 SET 时,我需要使用什么类型的 SQL 查询?
【发布时间】:2014-09-27 12:35:05
【问题描述】:

MYSQL 表 my_contacts

contact_id INT(11) AUTO_INCREMENT,
first_name VARCHAR(255),
interests SET('Animals','Trading Cards','Geocaching','Horseback Riding','Movies','Hiking');

SQL 查询

SELECT * FROM my_contacts WHERE interests = 'Animals';

示例

如果我的表中有一条与动物感兴趣的记录,则上面的查询可以正常工作。 ;-)

但是,如果我的表中有一条感兴趣的记录AnimalsHiking,上面的查询不会返回任何结果。 :-(

为什么?

【问题讨论】:

  • 使用LIKE 'Animals%'顺便说一句,你存储的数据有误。
  • LIKE '%Animals%' 即使 Animal 介于两者之间,它也会匹配。我同意@Mihai。
  • 非常感谢。有用。我相信您对我使用的代码是错误的是正确的。我是 MySQL 的新手。我正在努力学习 :-) 问题,所以为了我以后的参考,当我有多项选择来分配给一个列时,我还需要使用 SET 吗?
  • 设置没问题,但是你没有通过在一个单元格中存储超过 1 个值来使用数据库的关系能力。因为现在你没有 2 个爱好,而是一个需要精心查询才能拆开的字符串.
  • 谢谢大家。我知道有很多东西要学习:-(祝你周末愉快。

标签: mysql sql set where


【解决方案1】:

使用FIND_IN_SET(str,strlist):

SELECT * FROM my_contacts WHERE FIND_IN_SET('Animals', interests) > 0;

更多关于 SET 类型和操作的信息:http://dev.mysql.com/doc/refman/5.7/en/set.html

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多