2013-12-19 21 views
0

我寫了一些Javascript代碼,並試圖從MS Access數據庫中獲取數據。Like查詢Excel數據庫在Java腳本

我可以從表格中提取select *語句,但無法執行類似的查詢。 我使用下面的查詢:

strQuery = "SELECT * FROM Sheet1 WHERE (((Sheet1.Name) Like '*i*'))"; 

結果顯示沒有找到的記錄,如果我有以下替換此:

strQuery = "SELECT * FROM Sheet1 WHERE (((Sheet1.Name) = 'i'))"; 

這工作。

有人能幫助我嗎?

+0

它可能是你喜歡的條件的空間:像*我*應該像*我* *? - 唉不知何故它搞亂了我對這些字符的評論。在相似的條款中,你必須有一個空格,你需要刪除我相信 – JanR

+0

謝謝你寫JanR,我已經保留在這裏的空間只是發佈在正確的,否則它正在尋找別的東西..在我的代碼中它的'*我*'。 – user3103991

+0

ahh cool我遇到了同樣的問題。 – JanR

回答

0

與許多模式匹配函數不同,SQL的LIKE運算符中「零個或多個任意字符」的標準通配符是%,而不是*

因此,當其他功能將使用圖案*i*,一個標準的SQL WHERE條款是

WHERE (((Sheet1.Name) Like '%i%')) 

根據this documentation page,訪問實際上使用兩組不同的在不同情況下,通配符它是指爲「 ANSI-89「和」ANSI-92「(可能是指不同的SQL標準,雖然這看起來很奇怪):

Access支持兩組通配符,因爲它支持兩個標準結構化查詢語言 - ANSI-89和ANSI-92。通常,在針對Access數據庫運行查找或查找和替換操作時,使用ANSI-89通配符。在針對Access項目運行查詢時使用ANSI-92通配符 - 訪問連接到Microsoft SQL Server數據庫的文件。由於SQL Server使用ANSI-92標準,Access項目也使用ANSI-92標準。但是,Access也爲該規則提供了一個例外。

不知道訪問,這確實不太清楚的事情了我,但似乎在ANSI-89語法,通配符確實*,所以在某些情況下您的查詢將是正確,但是您所使用的特定設置是使用「ANSI-92」模式,因此它需要是%的版本。

有關於這個問題的進一步討論:Microsoft Jet wildcards: asterisk or percentage sign?區別似乎是你是否連接DAO或ADO,這對我來說都是希臘語,並使我的頭受傷。

+0

訪問使用*,因爲它是通配符。我想知道爲什麼%在這種情況下起作用。 – Chance

+0

嗯,好吧,我從來沒有使用過Access - 實際上,我根本不清楚OP使用什麼技術,因爲他們提到了Excel,Access和Javascript,但是隻發佈了SQL(儘管名字看起來很像像電子表格引用給我的)。 – IMSoP

+0

看來,Access根據項目類型/設置使用不同的約定。回答參考更新。 – IMSoP