我有一个名为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子句找到字符串,尽管字符串实际上在数据库中的fct ???
有人请指教。
答案 0 :(得分: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
答案 1 :(得分:0)
我不认识德比。但是你的查询看起来很奇怪:
SESSION
。所以这就是你连接的地方。我不希望在查询中找到它的名字。TESTSCHEMA
。所以这就是表所在的位置。ATEST
是一列。所以,您是否错过了TESTSCHEMA.ATEST
中的架构和列之间的表名?SESSIONDATA.SESSIONS
中选择。什么是SESSIONDATA
突然?这不是你提到的名字。什么是SESSIONS
?这是表名吗?我希望这样的查询:
SELECT * FROM testschema.sessions WHERE atest = 'MyTest'
(如果模式名称是您的连接的默认模式,那么模式名称甚至可能是多余的。)
答案 2 :(得分:0)
尝试使用数值代替“Mytest”进行引用
替换
SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = 'MyTest'
与
SELECT * FROM SESSIONDATA.SESSIONS WHERE SESSION.TESTSCHEMA.ATEST = 123