Sql Derby SELECT语句找不到特定字符串

Sql Derby SELECT语句找不到特定字符串,sql,jdbc,derby,Sql,Jdbc,Derby,我有一个表,其中包含一个名为ATEST的列,该列位于名为TESTSCHEMA的模式中,该模式位于名为SESSION的数据库中 我正在尝试查找其ATEST列包含名为“MyTest”的字符串的记录 我正在使用以下SQL: final String query = "SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = 'MyTest'"; 现在我放置了几个记录,它们的ATEST列包含“MyTest”。我以通常的方

我有一个表,其中包含一个名为ATEST的列,该列位于名为TESTSCHEMA的模式中,该模式位于名为SESSION的数据库中

我正在尝试查找其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();
请注意,为了简洁起见,try-and-catch代码被省略,因为我没有抛出任何异常

出于某种原因,我一直在得到相当于空结果集的结果。尽管数据库中有多条记录,其中ATEST='MyTest',但我无法让此语句找到任何记录

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

请有人提供建议。

尝试发送类似的邮件

  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 

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

  • 您说数据库名为
    会话
    。这就是你连接的地方。我不希望它的名字出现在查询中
  • 您的模式称为
    TESTSCHEMA
    。这就是表所在的位置<代码>ATEST是一列。那么,您在
    TESTSCHEMA.ATEST
    中的schema和column之间是否缺少表名
  • 您可以从
    SESSIONDATA.SESSIONS
    中选择。什么是会话数据?你提到的两个名字都不是。什么是
    会话
    ?那是表名吗
我希望有这样一个问题:

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

(如果架构名称是您连接的默认架构,那么它甚至可能是多余的。)

您可能希望尝试
atest,如“%MyTest%”
,以查看您的值中是否存在空白或类似内容。我尝试了您的建议。同样的结果…那我就不知道了。像这样的错误是不太可能的,所以它一定是在您的设置中。我会尝试使用LIKE(
如“%”
,然后使用
如“M%”
如“%t”
,…)来缩小范围。使用普通JDBC查询工具(如SquirreSQL或Derby自己的“ij”工具)执行查询。然后更新您的问题,以包含有关您案例的所有详细信息。人们只是猜测,因为你没有提供任何关于你正在做什么的真实细节。实际上,这是我最初的SQL调用。它也找不到任何东西。这就是为什么我尝试了我所尝试的…谢谢你的建议。我试着跟着它走,得到了同样的结果:没有找到斯特林。