2012-07-10 42 views
0

enter image description here如何在oracle10g數據庫中選擇名稱?

我想查找與Java和甲骨文

技能誰的名字,我知道像

select name from table_name where skills like '%java%' or skills like '%oracle%'; 

編碼,但我的問題是,在servlet的我怎麼能這樣做?

String skills=request.getParameter("skill"); 

我選擇查詢

select name from table_name where skill like '"++"'; 

在這裏,我很困惑, 我想這樣

select name from table_name where skill like '"+%skills%+"'; 

,但不工作。

我是一個非常webdeveloper新的Oracle,請幫我

我使用Oracle10g的

+3

你不應該有這樣的數據庫架構。用person_id和skill_id創建一個表person_skill。不要在一行中放置多個值。 – 2012-07-10 08:06:44

+0

你是如何執行這些語句的?通過JDBC聲明,Hibernate,Oracle ADF或其他方式? – npe 2012-07-10 08:06:56

+0

@npe通過JDBC聲明 – Prashobh 2012-07-10 08:50:25

回答

1

您可以嘗試REGEXP_LIKE

SELECT name from TABLENAME where 
WHERE REGEXP_LIKE (skills, '(Java|Oracle)'); 
1
String query = "select name from table_name"; 
    String skills = request.getParameter("skill"); 
    StringBuilder likePart = new StringBuilder(""); 
    boolean appendOrClause = false; 
    String skillsArray[] = skills == null ? null : skills.split(","); 

    if(skillsArray != null && skillsArray.length > 0){ 
     for(String skill : skillsArray){ 
      if(skill.trim().length() > 0){ 
       if(appendOrClause){ 
        likePart.append(" OR skills like '%" + skill.trim() + "%'"); 
       } else { 
        likePart.append(" where skills like '%" + skill.trim() + "%'"); 
       } 
       appendOrClause = true; 
      } 
     } 
     if(likePart.toString().trim().length() > 0){ 
      query += likePart.toString(); 
     } 
    } 
    if(query.indexOf("like") > 0){ 
     // User have skills 
     // Fire query to get User Name 
    } else { 
     // User doesn't have any skills 
     // don't Fire any query 
    } 
相關問題