sql
  • jdbc
  • derby
  • 2017-01-19 37 views 0 likes 
    0

    我有一個表,其中包含名爲ATEST的一個名爲TESTSCHEMA的架構的列,該架構位於名爲SESSION的數據庫中。Derby SELECT語句無法找到特定的字符串

    我想查找其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(); 
    

    需要注意的是,爲了簡潔,儘量因爲我沒有得到任何拋出的異常被省略抓碼。

    出於某種原因,我總是得到相當於空的結果集。儘管我在ATEST ='MyTest'的數據庫中有幾條記錄,但我無法得到這條語句來查找任何記錄!

    我在德比發現了一個錯誤嗎?沒有WHERE子句的搜索或WHERE子句尋找數字的搜索似乎沒有問題。爲什麼查找字符串的WHERE子句找不到字符串,儘管字符串實際上在數據庫中的fct?

    有人請指教。

    +0

    你可能想嘗試'atest LIKE'%MyTest%''來查看你的值中是否有可能出現空白或類似的東西。 –

    +0

    我試過你的suggestio。相同的結果... –

    +0

    然後我不知道。像這樣的錯誤是不太可能的,所以它必須是你的設置中的東西。我會試着用LIKE(比如'%'',然後'比如'M%'',比如'%t',...)來縮小這個範圍。 –

    回答

    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 
    
    +0

    感謝您的建議。我試着跟着它,並得到了同樣的結果:未找到該字符串。 –

    0

    我不知道德比。但你的查詢看起來很奇怪:

    • 你說數據庫叫做SESSION。所以這是你連接到的地方。我不希望它是查詢中的名稱。
    • 您的架構被稱爲TESTSCHEMA。所以這就是表格所在的地方。ATEST是一列。那麼你是不是錯過了TESTSCHEMA.ATEST中架構和列之間的表名?
    • 您從SESSIONDATA.SESSIONS中選擇。什麼是SESSIONDATA突然?這不是你提到的名字。什麼是SESSIONS?這是表名嗎?

    我希望關於這樣的查詢:

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

    (凡架構名稱甚至可能的情況下,多餘的這對您的連接的默認模式。)

    +0

    其實,那是我原來的SQL調用。它也沒有找到任何東西。這就是爲什麼我嘗試了我所嘗試的...... –

    相關問題