JDBC select查询与join等失败

JDBC select查询与join等失败,select,join,jdbc,sql-like,Select,Join,Jdbc,Sql Like,我试图通过获取SSN的最后四个数字作为用户的输入来搜索两个表中的数据 我有一个JDBC查询,如下所示: `String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE" +"FROM" +" G.M_NAME_A N, G.M_ID_A M" +"WHERE" + "N.NUMBER = M.NUMBER" +"AND"

我试图通过获取SSN的最后四个数字作为用户的输入来搜索两个表中的数据

我有一个JDBC查询,如下所示:

`String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
             +"FROM" +" G.M_NAME_A N, G.M_ID_A M"
             +"WHERE" + "N.NUMBER = M.NUMBER"
             +"AND" + "M.SSN like 'l4ssn' ";'
由于FROM关键字未在预期的位置找到或列索引无效,该操作失败


请帮助我设置查询格式。

是的,它应该会失败。检查SQL,在FROM前面缺少一个空格,在连接字符串的任何地方也一样。

按如下方式更改SQL。从、何处和周围添加空间

String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
         +" FROM " +" G.M_NAME_A N, G.M_ID_A M"
         +" WHERE " + "N.NUMBER = M.NUMBER"
         +" AND " + "M.SSN like 'l4ssn' ";
您的查询将查找M.SSN,它是14ssn,就像说M.SSN='14ssn'。如果要使用类似于14ssn的查询,请改用类似于“%14ssn%”的M.SSN

请注意,使用prepared语句,而不是在sql字符串中使用查询参数


1、 按如下所示更改SQL。空间被添加在从、何处和周围,如果您遵循编写sql的方式,sql缝合是如此的简单:

String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATEFROM G.M_NAME_A N, G.M_ID_A MWHEREN.NUMBER = M.NUMBERAND M.SSN like 'l4ssn' ";

String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
             +" FROM G.M_NAME_A N, G.M_ID_A M"
             +" WHERE N.NUMBER = M.NUMBER"
             -- modify +" AND" + "M.SSN like 'l4ssn' ";'
             +" AND  M.SSN like '%l4ssn%' ";
请尝试此查询

String sql=" SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE "+
           " FROM G.M_NAME_A N,G.M_ID_A M "+
           " WHERE N.NUMBER = M.NUMBER "+
           " AND M.SSN like 'l4ssn' ";

打印sql变量。可能存在连接问题。对于该问题,请在每个sql关键字之前附加空格。这将不起作用。空间在哪里旁边。?和也一样。刚刚修改过,再试一次。是这样的治疗吗?我不是问这个问题的人。我想这正是我在上面回答你的。为什么在每一行之前和之后。?这不就是生成正确的SQL吗?@VallabhPatade行前后都有足够的空间,我之所以这么说是因为它看起来很好看,也很容易理解。我会尽量让你知道结果。谢谢你给我指正了方向。我将在测试后使用新查询进行更新。
The question is resolved using the following query and PreparedStatement:
String l4ssn=("%"+l4ssn);
String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
     +" FROM " +" G.M_NAME_A N, G.M_ID_A M"
     +" WHERE " + "N.NUMBER = M.NUMBER"
     +" AND " + "M.SSN like ?";
PreparedStatement pstmt = new PreparedStatement(sql);
pstmt.setString(1,l4ssn);