2014-04-11 13 views
1

我有一個像如何找到一列中的值是否開始以字母訪問SQL

Name  Description EID  Basecode   
    -----  ----------- ----  --------- 
    name1  ssdad   1001  S2378797  
    name2  gfd   1002  S1164478  
    name3  gfdsffsdf  1003  R1165778  
    name4  ssdad   1004  M0007867  
    name5  gfd   1005  N7765111  
    name6  gfdsffsdf  1006  W5464111  
    name5  gfd   1005  N7765111  
    name6  gfdsffsdf  1006  A4000011 
    name6  gfdsffsdf  1006  W5464111  
    name10  ssdad   1001  2378797  
    name21  gfd   1002  1164478 
    name17  ssdad   1001  765 
    name81  gfd   1002  1167  

表如何檢索行,只有當列中的數據與其他比W¯¯任何字母和ñ開始在基本代碼列。

要檢索像

Name  Description EID  Basecode 
    -----  ----------- ----  ---------  
    name1  ssdad   1001  S2378797  
    name2  gfd   1002  S1164478  
    name3  gfdsffsdf  1003  R1165778  
    name4  ssdad   1004  M0007867  
    name6  gfdsffsdf  1006  A4000011 
+1

這是非常基本的SQL。在MS Access中查找Like子句。 – abhi

回答

2

您可以使用左,在作爲另一種方法,例如:

SELECT t.Name, t.Description, t.EID, t.Basecode 
FROM TheTable AS t 
WHERE Not IsNumeric(Left(t.Basecode,1)) AND Left(t.Basecode,1) Not In ("W","N") 
+0

正如它指出的那樣,OP還想排除以數字開頭的條目。很高興我們有人比我更熟悉SQL的Access方言! – RobP

+0

@RobP我一直在努力,甚至在你說話的時候也是事後的:) – Fionnuala

0

SELECT * FROM table WHERE NOT SUBSTRING(Basecode,1,1) IN ('W', 'N')有效期爲MySQL和我認爲這是訪問相同。一個好的SQL教程將是你的朋友,值得一兩天的學習。也許開始http://office.microsoft.com/en-us/access-help/introduction-to-access-sql-HA010341468.aspx

編輯:好評!爲了排除以數字開頭的東西,REGEXP會更具可讀性(儘管不會更快,如果這很重要的話)。我將其作爲練習留下,但是您希望WHERE NOT LIKE REGEXP(...使用錨點。搜索字符串的開始,然後W,N,或任何數字的字符組這個網站是一個很好的學習工具:http://www.regular-expressions.info/

EDIT2:是在MySQL中的另一種解決方案,我認爲這是相當標準將

SELECT * FROM table 
WHERE FIND_IN_SET(SUBSTRING(Basecode,1,1), 'W, N, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9') = 0 

如果MS-Access支持它。

+1

也可以這樣做......'不存在基準碼LIKE'W%'而不是基準碼LIKE'N%'' – RobP

+0

示例輸出表明以數字開頭的值也應該省略。 –

+1

謝謝,好點。編輯,以反映一種方法來處理,沒有詳細的AND NOT ...重複0到9 – RobP

1

來自接入應用程序本身,你可以使用左右的時間內運行一個查詢mething這樣的:

SELECT * FROM YourTableName 
WHERE Basecode LIKE '[a-m]*' OR Basecode LIKE '[o-v]*' OR Basecode LIKE '[x-z]*' 

編輯:HansUp指出,上述可以濃縮到

SELECT * FROM YourTableName WHERE Basecode LIKE '[a-mo-vx-z]*' 
+1

訪問將讓你把這些字符範圍結合成一個模式字符串:'WHERE Basecode LIKE'[a-mo-vx-z] *'' – HansUp

+0

@HansUp輝煌,謝謝! –

相關問題