MariaDB FIND_IN_SET() 函数的基础用法与实例

FIND_IN_SET()` 函数是 MariaDB 中的一个字符串函数,它用于在一个由逗号分隔的字符串列表中查找一个指定的字符串,并返回它在列表中的位置。

发布于

FIND_IN_SET() 函数是 MariaDB 中的一个字符串函数,它用于在一个由逗号分隔的字符串列表中查找一个指定的字符串,并返回它在列表中的位置。如果没有找到,或者任何一个参数不是字符串,那么返回 0。

语法

FIND_IN_SET() 函数的语法如下:

FIND_IN_SET(str, strlist)

其中:

  • str 是要查找的字符串,不能包含逗号。
  • strlist 是由逗号分隔的字符串列表,可以是一个常量,也可以是一个列名或表达式。

实例

下面是一些使用 FIND_IN_SET() 函数的实例。

在常量字符串列表中查找字符串

SELECT FIND_IN_SET('b', 'a,b,c,d');

输出:

2

说明:

  • 这个实例中,我们在一个由逗号分隔的字符串列表 'a,b,c,d' 中查找字符串 'b',并返回它在列表中的位置,即 2。
  • 注意,位置是从 1 开始计数的,而不是从 0 开始。

在表中的列中查找字符串

假设我们有一个名为 students 的表,它包含以下数据:

id name hobbies
1 Alice reading,music
2 Bob sports,games
3 Carol cooking,dance

我们可以使用 FIND_IN_SET() 函数在表中的列中查找字符串,例如:

SELECT name, FIND_IN_SET('music', hobbies) AS position
FROM students;

输出:

name position
Alice 2
Bob 0
Carol 0

说明:

  • 这个实例中,我们在 students 表的 hobbies 列中查找字符串 'music',并返回它在每一行中的位置,如果没有找到,就返回 0。
  • 我们可以看到,只有 Alice 的爱好中包含 'music',并且它在爱好列表中的位置是 2,所以返回 2。其他两行都没有找到 'music',所以返回 0。

使用特殊参数

FIND_IN_SET() 函数的参数也可以是数字类型。例如:

SELECT FIND_IN_SET(1, '1,2,3');

输出:

1

这个语句等同于下面的语句:

SELECT FIND_IN_SET(CAST(1 AS CHAR), '1,2,3');

输出:

1

相关函数

除了 FIND_IN_SET() 函数外,MariaDB 还提供了一些其他的字符串函数,例如:

  • SUBSTRING_INDEX() 函数,它用于返回一个由逗号分隔的字符串列表中的第 n 个子字符串。
  • INSTR() 函数,它用于返回一个字符串在另一个字符串中第一次出现的位置。
  • LOCATE() 函数,它用于返回一个字符串在另一个字符串中出现的位置,可以指定起始位置。

结论

FIND_IN_SET() 函数是一个有用的字符串函数,它可以在一个由逗号分隔的字符串列表中查找一个指定的字符串,并返回它在列表中的位置。它的参数必须是字符串,否则返回 0。它可以与表中的列或表达式一起使用,也可以与其他的字符串函数结合使用。