2016-10-16 31 views
0

我所遇到這表明,以下是有效的SQL語句一個在線網站....SQL LIKE「[AMD]%」

SELECT * 
FROM PARTS 
WHERE Desc1 LIKE '[AMD]%' 

這表明,這將返回以A開始的所有DESC1, M或d

我不能得到這個返回的結果和必須這樣做

SELECT * 
FROM PARTS 
WHERE Desc1 LIKE 'A%' OR Desc1 LIKE 'M%' OR Desc1 LIKE 'D%' 

我使用Oracle快捷第11G(XE)是格式「[AMD]%」是否正確?

回答

3

您引用的語法是SQL Server語法。 Oracle有對正則表達式更好的支持,所以你會做:

SELECT * 
FROM PARTS 
WHERE regexp_like(Desc1, '^[AMD].*$'); 

其實,.*$是不必要的,所以你可以寫WHERE regexp_like(Desc1, '^[AMD]'LIKE模式與正則表達式的區別在於LIKE模式與整個字符串匹配,但正則表達式只是其中的一部分。當我在SQL中使用正則表達式時,我經常讓它們匹配整個字符串,以避免認知失調。

順便問一下,你也可以這樣做:

WHERE substr(DESC1, 1, 1) IN ('A', 'M', 'D') 
+0

很大的幫助@Gordon Linoff,有沒有還甲骨文語法來匹配或提高對SQL Server語法SELECT * FROM PARTS WHERE GRP1 LIKE'[AD]%' 表示以GRP1開始的任何字母A,B,C或D? –

+0

同樣的事情有效。 ..'^ [A-D]'。 –