📅  最后修改于: 2023-12-03 15:33:02.567000             🧑  作者: Mango
在 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
中选择name
和price
两列,并使用CASE表达式添加一列is_available
。如果'apple'存在于该行的names
列表中,则在新列中返回'yes',否则返回'no'。
在逗号分隔的列表中查找一个字符串可能是一个常见的需求,MySQL提供了FIND_IN_SET()函数来使这个过程变得更加容易和快捷。使用该函数,可以轻松地从逗号分隔列表中获取位置、标记和过滤。