0

我对这里的集合类型有一些疑问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)

返回空集!!!为什么?

4

3 回答 3

1

您不能使用find_in_set函数来搜索带有逗号的字符串'a,b',而只能搜索以逗号分隔的任何字符串,例如aor bc因此如果您尝试这样做将正常工作:

select * from set_test where find_in_set('a',set_col); 

但在您的情况下,您可以使用like

select * from set_test where set_col like '%a,b%';
于 2016-03-14T13:45:21.047 回答
0
于 2016-03-14T13:53:23.353 回答
0

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;

于 2016-03-14T13:57:47.137 回答