Sql Derby SELECT语句找不到特定字符串
我有一个表,其中包含一个名为ATEST的列,该列位于名为TESTSCHEMA的模式中,该模式位于名为SESSION的数据库中 我正在尝试查找其ATEST列包含名为“MyTest”的字符串的记录 我正在使用以下SQL: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”。我以通常的方
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
我不知道德比。但您的查询看起来很奇怪:
- 您说数据库名为
。这就是你连接的地方。我不希望它的名字出现在查询中会话
- 您的模式称为
。这就是表所在的位置<代码>ATEST是一列。那么,您在TESTSCHEMA
中的schema和column之间是否缺少表名TESTSCHEMA.ATEST
- 您可以从
中选择。什么是会话数据?你提到的两个名字都不是。什么是SESSIONDATA.SESSIONS
?那是表名吗会话
SELECT * FROM testschema.sessions WHERE atest = 'MyTest'
(如果架构名称是您连接的默认架构,那么它甚至可能是多余的。)您可能希望尝试
atest,如“%MyTest%”
,以查看您的值中是否存在空白或类似内容。我尝试了您的建议。同样的结果…那我就不知道了。像这样的错误是不太可能的,所以它一定是在您的设置中。我会尝试使用LIKE(如“%”
,然后使用如“M%”
,如“%t”
,…)来缩小范围。使用普通JDBC查询工具(如SquirreSQL或Derby自己的“ij”工具)执行查询。然后更新您的问题,以包含有关您案例的所有详细信息。人们只是猜测,因为你没有提供任何关于你正在做什么的真实细节。实际上,这是我最初的SQL调用。它也找不到任何东西。这就是为什么我尝试了我所尝试的…谢谢你的建议。我试着跟着它走,得到了同样的结果:没有找到斯特林。