【问题标题】:Derby SELECT statement failing to find a specific stringDerby SELECT 语句找不到特定字符串
【发布时间】: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”工具)中执行查询。然后更新您的问题以包含关于您的案例的所有详细信息。人们只是在猜测,因为你没有提供任何关于你在做什么的真实细节。

标签: sql jdbc derby


【解决方案1】:

尝试发送喜欢

  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 

【讨论】:

  • 感谢您的建议。我尝试跟踪它并得到相同的结果:找不到字符串。
【解决方案2】:

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

  • 您说数据库名为SESSION。所以这就是你连接的地方。我不希望它的名字出现在查询中。
  • 您的架构称为TESTSCHEMA。所以这是表所在的位置。ATEST 是一列。那么TESTSCHEMA.ATEST中的schema和column之间的表名你是不是漏掉了?
  • 您从SESSIONDATA.SESSIONS 中选择。 SESSIONDATA突然是什么?你提到的两个名字都不是。 SESSIONS 是什么?是表名吗?

我希望这样的查询:

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

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

【讨论】:

  • 实际上,那是我最初的 SQL 调用。它也找不到任何东西。这就是为什么我尝试了我尝试过的...
【解决方案3】:

尝试使用数值代替“Mytest”进行引用

替换

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

SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = 123

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2021-01-28
    • 2020-06-27
    • 2012-11-25
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多