FIND_IN_SET¶
参数¶
text_expression1
要查询的字符串
text_expression_list
给定的表达式列表或者字段名,参数以”,”分隔
如果任一参数为NULL,则返回NULL。 如果第一个参数包含逗号(,)字符,则此函数将无法正常工作。
返回值¶
如果第一个参数是常量字符串,第二个参数是SET类型的列,则将FIND_IN_SET()函数优化为使用位算术。 如果str不在strlist中或strlist为空字符串,则返回0。
示例¶
示例: 测试 FIND_IN_SET()功能的用例
--指定两个字符串常量
SELECT FIND_IN_SET('a','b,c,a,d');
FIND_IN_SET(bigint) |
-------------------------
3 |
总数目:1
SELECT FIND_IN_SET('a,','b,a,,c,d');
FIND_IN_SET(bigint) |
-------------------------
0 |
总数目:1
SELECT FIND_IN_SET('a','');
FIND_IN_SET(bigint) |
-------------------------
0 |
总数目:1
SELECT FIND_IN_SET('','a,,b');
FIND_IN_SET(bigint) |
-------------------------
2 |
总数目:1
SELECT FIND_IN_SET('a',NULL);
FIND_IN_SET(bigint) |
-------------------------
null |
总数目:1
SELECT FIND_IN_SET('',',abc');
FIND_IN_SET(bigint) |
-------------------------
1 |
总数目:1
SELECT FIND_IN_SET('a',',a,b,c');
FIND_IN_SET(bigint) |
-------------------------
2 |
总数目:1
SELECT FIND_IN_SET(NULL,'a,d,b');
FIND_IN_SET(bigint) |
-------------------------
null |
总数目:1
SELECT FIND_IN_SET('中国','zhong国,中guo,中国');
FIND_IN_SET(bigint) |
-------------------------
3 |
总数目:1
--创建测试表,测试find_in_set函数表现
DROP TABLE DIVISIONS;
create table divisions(id int auto_increment primary key, name varchar(25) not null, belts varchar(200) not null);
insert into divisions(name,belts) values ('0-1','white,yellow,orange'),
('0-2','purple,green,blue'),
('0-3','brown,red,black'),
('0-4','white,yellow,orange'),
('0-5','purple,green,blue'),
('0-6','brown,red'),
('0-7','black'),
('0-8','white,yellow,orange'),
('0-9','purple,green,blue'),
('0-10','brown,red');
select * from divisions where find_in_set('red',belts)>0 order by id;
ID(int) |NAME(varchar) |BELTS(varchar) |
----------------------------------------------------
3 |0-3 |brown,red,black |
----------------------------------------------------
6 |0-6 |brown,red |
----------------------------------------------------
10 |0-10 |brown,red |
总数目:3
/**************************环境清除***********************************/
DROP TABLE DIVISIONS CASCADE;