sql
  • jdbc
  • derby
  • 2017-01-19 38 views 0 likes 
    0

    我有一个表,其中包含名为ATEST的一个名为TESTSCHEMA的架构的列,该架构位于名为SESSION的数据库中。Derby SELECT语句无法找到特定的字符串

    我想查找其ATEST列有一个名为“MyTest”的字符串的记录。

    我使用下面的SQL:

    final String query = "SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = 'MyTest'"; 
    

    现在我已经把几个记录,其ATEST列中包含 “MyTest的”。我使用JDBC以通常的方式:

     device = aConnect.prepareCall(query); 
    
        ResultSet result = device.executeQuery(); 
    

    需要注意的是,为了简洁,尽量因为我没有得到任何抛出的异常被省略抓码。

    出于某种原因,我总是得到相当于空的结果集。尽管我在ATEST ='MyTest'的数据库中有几条记录,但我无法得到这条语句来查找任何记录!

    我在德比发现了一个错误吗?没有WHERE子句的搜索或WHERE子句寻找数字的搜索似乎没有问题。为什么查找字符串的WHERE子句找不到字符串,尽管字符串实际上在数据库中的fct?

    有人请指教。

    +0

    你可能想尝试'atest LIKE'%MyTest%''来查看你的值中是否有可能出现空白或类似的东西。 –

    +0

    我试过你的suggestio。相同的结果... –

    +0

    然后我不知道。像这样的错误是不太可能的,所以它必须是你的设置中的东西。我会试着用LIKE(比如'%'',然后'比如'M%'',比如'%t',...)来缩小这个范围。 –

    回答

    0

    尝试发送类似

    final String query = "SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = '''MyTest'''"; 
    

    应该打DB像

    SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = 'MyTest' 
    

    ,而不是

    SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST =MyTest 
    
    +0

    感谢您的建议。我试着跟着它,并得到了同样的结果:未找到该字符串。 –

    0

    我不知道德比。但你的查询看起来很奇怪:

    • 你说数据库叫做SESSION。所以这是你连接到的地方。我不希望它是查询中的名称。
    • 您的架构被称为TESTSCHEMA。所以这就是表格所在的地方。ATEST是一列。那么你是不是错过了TESTSCHEMA.ATEST中架构和列之间的表名?
    • 您从SESSIONDATA.SESSIONS中选择。什么是SESSIONDATA突然?这不是你提到的名字。什么是SESSIONS?这是表名吗?

    我希望关于这样的查询:

    SELECT * FROM testschema.sessions WHERE atest = 'MyTest' 
    

    (凡架构名称甚至可能的情况下,多余的这对您的连接的默认模式。)

    +0

    其实,那是我原来的SQL调用。它也没有找到任何东西。这就是为什么我尝试了我所尝试的...... –

    相关问题