is there a way to write an sql query that finds all rows where the field value is a substring of a given string.
Example:
table names
Name | Nickname
rohit iamrohitbanga
banga rohitnick
sinan unur
query should be something like
select * from names where Name is a substring of "who is rohit"; // to get first row
select * from names where Nickname is a substring of "who is rohitnick"; // to get second row
select * from names where Name is a substring of "who is unur and banga"
or Nickname is substring of "who is unur and banga"; // to get second and third row
How is it possible?
If it is not possible then i'll have to achieve that behaviour in java. i am using jdbc:mysql driver to connect to the database.
Update your solutions work
now a bit of a twist. if we want to check if a substring of the field occurs as a substring of the string that we specify.
select * from names where Name is a substring of "who is sina"; // to get third row
One problem with all these approaches is your indexes go right out the window. You'll have to do a table scan for each and every row, which means your performance will only get worse and worse as the table size grows.
I'd rethink this approach if your table is going to be large. Maybe you need a indexed searcher like Lucene.
If one of
Name
orNickname
has to be found within the text useNo index can be used for that, so it might take long for large tables.
You can also reverse the LIKE condition.
Note, this probably isn't any faster than instr("who is Rohit", Name) but it may be.
or, equivalently: