FIND_IN_SET
功能描述
在逗号分隔的字符串列表中查找指定字符串的位置。
语法格式
FIND_IN_SET(expr1,expr2)
参数说明
expr1
:要查找的字符串。expr2
:要搜索的逗号分隔的字符串列表。
说明:
- 如果
expr1
在expr2
中,则返回一个正整数。- 如果
expr1
不在expr2
中,或者expr2
是空字符串,则返回零。- 如果
expr1
或expr2
为NULL,则函数返回NULL值。
函数返回类型
INTEGER数值类型。
示例
示例1
基本使用。c是字符串的第3个元素,返回3。sqlSELECT FIND_IN_SET('c', 'a,b,c,d'); EXPR1| -----+ 3|
示例2
在查询中使用。查询表tab_test中包含3的所有记录。sql# 创建基础用例表 CREATE TABLE tab_test ( id VARCHAR(100) ); #初始化用例表数据 INSERT INTO tab_test (id) VALUES ('1,2,3'), ('2,4,6'), ('3,5,7'), ('4,6,8'); # 在查询语句中使用FIND_IN_SET进行结果集过滤 SELECT * FROM tab_test WHERE FIND_IN_SET('3', id) > 0; ID | -----+ 1,2,3| 3,5,7|
示例3
与字段结合使用。查询表tab_test中col_list列包含col_name的所有记录。sql# 创建基础用例表 CREATE TABLE tab_test ( id int NOT NULL, col_name varchar(255) NOT NULL, col_list varchar(255) NOT NULL, PRIMARY KEY (id) ); # 初始化用例表数据 INSERT INTO tab_test(id,col_name,col_list) VALUES (1, '张三', '张三,李四,王武,小王'); INSERT INTO tab_test(id,col_name,col_list) VALUES (2, '李四', '张三,李四,王武'); INSERT INTO tab_test(id,col_name,col_list) VALUES (3, '王武', '张三,李四'); INSERT INTO tab_test(id,col_name,col_list) VALUES (4, '小王', '张三'); # 在查询语句中使用FIND_IN_SET进行结果集过滤 SELECT * FROM tab_test WHERE FIND_IN_SET(col_name,col_list) > 0; ID|COL_NAME|COL_LIST | --+-----+-----------+ 1|张三 |张三,李四,王武,小王| 2|李四 |张三,李四,王武 |