首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IF/CASE语句查找MYSQL中的字符串中是否存在子字符串

使用IF/CASE语句查找MYSQL中的字符串中是否存在子字符串
EN

Stack Overflow用户
提问于 2019-11-25 22:16:40
回答 1查看 456关注 0票数 0

我有一个列,列中每一行都有一个产品列表。例如:

  • 球棒,球,手套
  • 蝙蝠,手套
  • 鞋,手套

我想为每个产品创建一个新列,该列的值为1或0,取决于该产品是否存在于该行中。

我现在正在使用以下代码:

代码语言:javascript
复制
select
*,
CASE WHEN product_name LIKE '%bat%' THEN 1 else 0 END AS bat,
CASE WHEN product_name LIKE '%gloves%' THEN 1 else 0 END AS gloves
from products

它不起作用。请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2019-11-25 22:22:25

您可以使用handy MysQL function find_in_set()检查一个值是否属于逗号分隔的列表:

代码语言:javascript
复制
select
    p.*,
    find_in_set('bat', product_name) > 0 bat
    find_in_set('gloves', product_name) > 0 gloves
from products p

如果在CSV列表中找到该值,find_in_set()将返回一个介于1和N之间的数字,该数字表示其位置;否则它将返回0 (如果搜索的CSV列表为null,则返回null )。因此,基本上,要检查一个值是否属于CSV列表,只需检查find_in_set()返回的值是否严格高于0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59040901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档