我对这里的集合类型有一些疑问find_in_set
是代码:
create table set_test(id int,set_col SET('a','b','c','d'));
insert into set_test(id,set_col) values(1,'a,b'),(2,'a,b,b');
select * from set_test where find_in_set('a,b',set_col)
返回空集!!!为什么?
我对这里的集合类型有一些疑问find_in_set
是代码:
create table set_test(id int,set_col SET('a','b','c','d'));
insert into set_test(id,set_col) values(1,'a,b'),(2,'a,b,b');
select * from set_test where find_in_set('a,b',set_col)
返回空集!!!为什么?
您不能使用find_in_set
函数来搜索带有逗号的字符串'a,b'
,而只能搜索以逗号分隔的任何字符串,例如a
or b
,c
因此如果您尝试这样做将正常工作:
select * from set_test where find_in_set('a',set_col);
但在您的情况下,您可以使用like
:
select * from set_test where set_col like '%a,b%';
find_in_set函数返回搜索结果的数值,如果未找到则返回 0 。
你应该改变: select * from set_test where find_in_set('a,b',set_col);
To: select * from set_test where find_in_set('a,b',set_col) > 0;