FIND_IN_SET
功能描述
在逗号分隔的字符串列表中查找指定字符串的位置。
语法格式
FIND_IN_SET(expr1,expr2)
参数说明
- expr1: 要查找的字符串
- expr2: 要搜索的逗号分隔的字符串列表
说明:
- 如果expr1或expr2为NULL,则函数返回NULL值
- 如果expr1不在expr2中,或者expr2是空字符串,则返回零
- 如果expr1在expr2中,则返回一个正整数
函数返回类型
INTEGER数值类型
示例
示例1
基本使用。sqlSELECT FIND_IN_SET('c', 'a,b,c,d'); EXPR1| -----+ 3|
上述示例结果返回3,因为c是列表的第3个元素。
示例2
在查询中使用。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|
上述示例表示查询表tab_test中包含3的所有记录。
示例3
与字段结合使用。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|李四 |张三,李四,王武 |
上述示例表示查询表tab_test中col_list列包含col_name的所有记录。