📜  MySQL 中的 FIND_IN_SET()函数(1)

📅  最后修改于: 2023-12-03 15:33:02.567000             🧑  作者: Mango

MySQL 中的 FIND_IN_SET()函数介绍

在 MySQL 中,FIND_IN_SET()函数用于在一个逗号分隔的字符串列表中查找一个字符串,并返回其在列表中的位置。该函数的语法如下:

FIND_IN_SET(str, strlist)

其中,str表示要查找的字符串,strlist表示包含逗号分隔字符串的列表。如果找到了要查找的字符串,则返回它在列表中的位置,否则返回0。

使用案例

以下是使用FIND_IN_SET()函数的一些案例:

案例一

查找一个值是否存在于一个逗号分隔的字符串列表中:

SELECT FIND_IN_SET('apple', 'orange,apple,banana') AS result;

输出结果为:

result
------
2

因为在列表中,'apple'的位置为2。

案例二

返回包含特定值的所有行:

SELECT * FROM fruits WHERE FIND_IN_SET('apple', names);

其中,fruits是一个表,它包含一个名为names的逗号分隔字符串列表。

案例三

作为 CASE 表达式的一部分,根据值的存在与否设置某个字段的值:

SELECT name, price,
    CASE
        WHEN FIND_IN_SET('apple', names)
        THEN 'yes'
        ELSE 'no'
    END AS is_available
FROM fruits;

上述代码会从表fruits中选择nameprice两列,并使用CASE表达式添加一列is_available。如果'apple'存在于该行的names列表中,则在新列中返回'yes',否则返回'no'。

总结

在逗号分隔的列表中查找一个字符串可能是一个常见的需求,MySQL提供了FIND_IN_SET()函数来使这个过程变得更加容易和快捷。使用该函数,可以轻松地从逗号分隔列表中获取位置、标记和过滤。