【发布时间】:2017-01-19 08:09:23
【问题描述】:
我有一个表,其中包含一个名为 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 和 catch 代码,因为我没有抛出任何异常。
出于某种原因,我不断得到相当于空结果集的结果。尽管我在数据库中有几条 ATEST = 'MyTest' 的记录,但我无法通过这条语句找到任何记录!
我是否在 Derby 中发现了错误?没有 WHERE 子句或 WHERE 子句查找数字的搜索似乎没有问题。为什么查找字符串的 WHERE 子句找不到字符串,尽管字符串实际上在数据库中???
请高人指教。
【问题讨论】:
-
您可能想尝试
atest LIKE '%MyTest%',看看您的值中是否有空格等您看不到的东西。 -
我试过你的建议。同样的结果...
-
那我就不知道了。像这样的错误是不太可能的,所以它一定是你的设置中的东西。我会尝试使用 LIKE(
like '%',然后是like 'M%',like '%t',...)来缩小范围。 -
在普通的 JDBC 查询工具(如 SquirrelSQL 或 Derby 自己的“ij”工具)中执行查询。然后更新您的问题以包含关于您的案例的所有详细信息。人们只是在猜测,因为你没有提供任何关于你在做什么的真实细节。