2013-03-06 92 views
2

鑑於以下字段和條目,如何找到在最後4個字母內具有非數字字符的3個條目?如何在查詢中組合Right和Like函數?

Field1 
------ 
MA1234 
DC4567 
OHABCD 
CAWXYZ 
FLLMNO 
MI9876 

我猜這將是RightLike "[A-Z]*"組合,如Right([Field1], 4) = Like "[A-Z]*"但不起作用。

編輯:我正在尋找任何最後4個字符是非數字的任何條目。

謝謝!

+0

聽起來LIK e正則表達式和訪問不能很好地結合在一起。看到這個問題的一些更多的信息 - http://stackoverflow.com/questions/5539141/microsoft-office-access-like-vs-regex – 2013-03-06 15:19:08

+0

@HansUp,AB123C將滿足'在最後4個字母的非數字'條件。我更新了我的原始問題以澄清。謝謝! – 2013-03-07 16:07:12

回答

1

你可以抓住的最後四個字符,並在同一時間,比較它們一個字符是這樣的:

WHERE RIGHT(Field1, 4) LIKE '[A-Z][A-Z][A-Z][A-Z]' 

我知道的例子是在2008年SQL,但這裏的a SQL Fiddle演示它一樣好。

編輯

如果你想有至少一個非數字字符的字段(即不都是0-9),你可以搜索非數字值()並確保所有四個字符不是數字(NOT LIKE '[0-9][0-9][0-9][0-9]'):

WHERE RIGHT(Field1, 4) LIKE '*[^0-9]*' AND 
    RIGHT(Field1, 4) NOT LIKE '[0-9][0-9][0-9][0-9]' 
+0

that worked ..我結束了使用'WHERE RIGHT(Field1,4)LIKE'[AZ]''這似乎只查找AZ中的4個字母中的1個,這在我原來的問題中沒有考慮到。 – 2013-03-06 15:24:30

+1

我很困惑,你只想在最後四個字母中找到一個字母,還是最後四個字母都必須是字母?如果前者,我會縮小你想要'LIKE'* [A-Z] *''(注意星號) – LittleBobbyTables 2013-03-06 15:27:22

+0

直到現在我才意識到,如果只有最後4個字符中的1個是A-Z,那麼數據是無效的。我編輯了我原來的問題,而我之前評論中的解決方案畢竟沒有成功。 – 2013-03-06 15:29:24

0

下面是答案:

SELECT * 
FROM 
(
    VALUES 
     ('MA1234'), 
     ('DC4567'), 
     ('OHABCD'), 
     ('CAWXYZ'), 
     ('FLLMNO'), 
     ('MI9876') 
) v(Code) 
WHERE Code like '*[A-Z][A-Z][A-Z][A-Z]'