2013-04-15 62 views
0

我有一個Java程序連接到SQL數據庫。我需要從具有以給定字符串開頭的字段的表中檢索記錄。我推出了這個查詢:JAVA中的SQL查詢。 LIKE命令

SELECT s.DATA 
FROM TMT_SOLICITUD s, TMT_TRAMITES t 
WHERE s.IDTRAMITE='723' 
AND s.IDTRAMITE=t.IDTRAMITE 
AND s.DATA LIKE '<?xml *' 

我知道沒有使用表TMT_TRAMITES。我們仍在開發該程序,它很快就會被使用。忽略那部分。

問題是返回給我的結果集是空的。但是,如果通過Access啓動相同的查詢,它將返回4條記錄(這是正確的)。

任何人都知道如何正確使用LIKE命令,或者這是不工作的原因?

+1

Microsoft Access使用僅與SQL類似的查詢語言,但由於它是「擴展」(使用「錯誤的」通配符是其中之一),因此遠不是「真正的」SQL。如果您從Access更改爲「真正」的DBMS,請務必閱讀您的DBMS手冊(可能還有一個關於標準SQL的好教程) –

回答

3

嘗試使用'%'而不是'*': %允許你匹配任何長度的字符串(包括零長度)

WHERE EMP_name like 'Hew%'; 

WHERE EMP_name like '%Hew'; 

WHERE EMP_name like '%Hew%'; 
+0

它完美地工作。謝謝:D – Rumpelstinsk

0

我會嘗試使用%而不是*。您可以將它放在查詢字符串的任何位置,並根據需要多次使用它。但是,我沒有看到只使用通配符而沒有任何其他數據來縮小它的意義 - 它不會像現在這樣非常有用。除非你想匹配實際的星號(我可能會誤認爲你的意圖),那麼使用%*%

+0

它完美地工作:D – Rumpelstinsk

2

我已經遇到過這樣的問題。

訪問SQL對Like命令不使用與標準SQL相同的通配符。

當你使用一個庫通過Java來訪問你的數據庫,嘗試用​​

AND s.DATA LIKE '%' 

免去您

AND s.DATA LIKE '*' 

爲「%」是標準的通配符來得到任何字符串。