SQL:如果在()子句中不起作用,如何获取数据

时间:2017-03-22 01:54:30

标签: mysql

我有一个名为'items'的表。 它有包括索引列的列,如下所示。

{% capture new_url %}/{{element.name}}.html{% endcapture %}
<li {% if page.url == new_url %} class="active"{% endif %}>

当我使用以下声明时

title        | name   | areacode
---------------------------------
police       | user1  | 31,31,31
FireStation  | user2  | 31,1,2
Restaurant   | user22 | 1,1,0,32,32
---------------------------------

我得到(警察,用户1)和(FireStation,用户2) 但是,当我使用IN(1) 我无法获得(FireStation,user2)

我发现当多个值如

时,I​​N子句很有用
    select title, name from items where IN(31)

被使用。

但是当单个值如IN(1)或IN(0)时,它有时无法正确获取数据。我找到了CONTAINS方法。但不熟悉它。

总之,如果areacode包含值'1',我该如何获取(FireStation,user2)?或者(餐厅,用户22)当areacode的值为'0'时?

1 个答案:

答案 0 :(得分:1)

您可能不应该将区域代码数据存储为CSV,因为它是非标准化的,因此很难处理。话虽这么说,MySQL有一个名为FIND_IN_SET()的函数,可以检查给定值是否出现在CSV字符串中。这样的事情应该有效:

SELECT title, name
FROM items
WHERE FIND_IN_SET('0', areacode) > 0

如果您想检查01区号,可以使用此WHERE子句:

WHERE FIND_IN_SET('0', areacode) > 0 OR FIND_IN_SET('1', areacode) > 0