Skip to main content
Added query to count maximum number of spaces (and thus maximum number of units matched)
Source Link

In MySQL 5.6 ...

create table tt (
  data varchar(20)
 );
 
insert into tt values ('B C D E');
insert into tt values ('A B');
insert into tt values ('F G');
insert into tt values ('C D E F G');

insert into tt values ('X');

insert into tt values ('E D C B');
insert into tt values ('B A');
insert into tt values ('G F');
insert into tt values ('G F E D C');

select data,length(data) from tt where 'A B C D E F G' rlike data;


|      data | length(data) |
|-----------|--------------|
|   B C D E |            7 |
|       A B |            3 |
|       F G |            3 |
| C D E F G |            9 | 

Added query to count maximum number of spaces (and thus maximum number of units matched)


select data,max(length(data)-length(replace(data,' ',''))+1) num_units_matched
from tt
where 'A B C X D E F G' rlike data
group by data
order by 2 desc
limit 1;

|      data | num_units_matched |
|-----------|-------------------| 
|       A B |                 2 |

In MySQL 5.6 ...

create table tt (
  data varchar(20)
 );
 
insert into tt values ('B C D E');
insert into tt values ('A B');
insert into tt values ('F G');
insert into tt values ('C D E F G');

insert into tt values ('X');

insert into tt values ('E D C B');
insert into tt values ('B A');
insert into tt values ('G F');
insert into tt values ('G F E D C');

select data,length(data) from tt where 'A B C D E F G' rlike data;


|      data | length(data) |
|-----------|--------------|
|   B C D E |            7 |
|       A B |            3 |
|       F G |            3 |
| C D E F G |            9 |

In MySQL 5.6 ...

create table tt (
  data varchar(20)
 );
 
insert into tt values ('B C D E');
insert into tt values ('A B');
insert into tt values ('F G');
insert into tt values ('C D E F G');

insert into tt values ('X');

insert into tt values ('E D C B');
insert into tt values ('B A');
insert into tt values ('G F');
insert into tt values ('G F E D C');

select data,length(data) from tt where 'A B C D E F G' rlike data;


|      data | length(data) |
|-----------|--------------|
|   B C D E |            7 |
|       A B |            3 |
|       F G |            3 |
| C D E F G |            9 | 

Added query to count maximum number of spaces (and thus maximum number of units matched)


select data,max(length(data)-length(replace(data,' ',''))+1) num_units_matched
from tt
where 'A B C X D E F G' rlike data
group by data
order by 2 desc
limit 1;

|      data | num_units_matched |
|-----------|-------------------| 
|       A B |                 2 |

Source Link

In MySQL 5.6 ...

create table tt (
  data varchar(20)
 );
 
insert into tt values ('B C D E');
insert into tt values ('A B');
insert into tt values ('F G');
insert into tt values ('C D E F G');

insert into tt values ('X');

insert into tt values ('E D C B');
insert into tt values ('B A');
insert into tt values ('G F');
insert into tt values ('G F E D C');

select data,length(data) from tt where 'A B C D E F G' rlike data;


|      data | length(data) |
|-----------|--------------|
|   B C D E |            7 |
|       A B |            3 |
|       F G |            3 |
| C D E F G |            9 |