I wanted to search some keywords from particular column and print all the column values corresponding to the keyword, Now the problem is if I use query
Select * from Candidate where skills like %C% , and different rows in skills are:
Java, C, C++, HTML, CSS, Net Beans, My Eclipse
Java, Asp.Net, Eclipse
C, PHP, CSS, Hibernate
Now it is diplaying all the rows as C is a substring in every row, I tried to use C% rather than %C% but only 3rd line is displayed as it starts with C but I need to show all the Rowrs having “C” as a different word, How can I search the full world, Suggest piece of code.
import java.util.*;
import java.sql.*;
import java.io.*;
public class TokensOfString
{
public static void main(String[] args)
{
String str;
String query = "";
try
{
int i =0, cntToken =0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the keywords to be searched");
str = br.readLine();
StringTokenizer words = new StringTokenizer(str, ",");
cntToken = words.countTokens();
//System.out.println("No. of Tokens = "+cntToken);
String token[]= new String[cntToken];
while(words.hasMoreElements())
{
token[i] = words.nextToken().trim();
//System.out.println(token[i]);
i++;
}
//System.out.println(++i+" : "+words.nextElement().toString().trim());
query = "SELECT * from can_skills where skills like '"+ token[0] +"%'";
// System.out.println("Query at 34 : "+query);
if(cntToken == 1)
{
query ="";
query = "SELECT * from can_skills where skills like '"+ str +"%'";
}
if(cntToken > 1)
{
for( int j=1; j < cntToken; j++)
query = query + " or skills like '"+ token[j] +"%'";
}
System.out.println("Query at 43 : "+query);
Connection con = null;
Class.forName("com.mysql.jdbc.Driver");
String hostName = "localhost";
String port = "3306";
String userName = "root";
String password = "root";
con = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/prem", userName, password);
Statement statement= con.createStatement();
ResultSet rs = statement.executeQuery(query);
while(rs.next())
{
System.out.println(rs.getString(4));
}
}
catch(ClassNotFoundException e){ System.out.println(e); }
catch(Exception ex){ System.out.println(ex); }
}
}
Use a regular expression in instead of a
likeexpression:The
|meansor. The^means the beginning of the string and the$means the end. So it will match the token in the beginning, the end and in the middle of the string. Notice that there are spaces before the second and third cases.In java, if I didn’t get it wrong: