2017-08-01 35 views
1

我的查詢dosn't在Oracle SQL開發者中爲此查詢提取任何數據可以有人幫忙嗎?過濾器數據不以oracle中的字母列表開頭

SELECT * FROM Customers 
WHERE City NOT LIKE '[bsp]%'; 
+1

使用[REGEXP_LIKE功能](https://docs.oracle.com/cd/B12037_01/server.101/b10759 /conditions018.htm)而不是'like' – krokodilko

+0

請注意標籤堆棧溢出添加到您的帖子。在這種情況下,我將編輯以刪除明顯不合適的「MySQL」標籤。 – mathguy

+0

@krokodilko - 如果性能很重要,''like'會更好,因爲它可以使用'city'上的索引。見Gurwinder Singh的答案如下。 – mathguy

回答

1

既可以使用正則表達式(宜避免對數據的大小合適,因爲它趨向於比所述替代解決方案相當慢使用簡單like其甚至可以是Sargable有時)或使用多個條件。

使用多個條件:

SELECT * FROM Customers 
WHERE City NOT LIKE 'b%' 
and city not like 's%' 
and city not like 'p%'; 

或使用regexp_like

select * 
from customers 
where not regexp_like(city, '^[bsp]'); 
+0

我認爲以上應該是[bsp]而不是^ [bsp] – deepakl

+0

@deepakl - 不是。城市名稱以b,s或p開頭......不包含b,s或p。 [** [bsp]'**]的演示(http://rextester.com/ROWS42332).... [** ^'[bsp]'**]的演示(http:///rextester.com/YLL1830) – GurV