2016-07-11 51 views
2

我想過濾我的結果集,只返回以NIR_開頭的值。過濾器選擇其中值以NIR_開頭

我的SQL語句,這樣做是如下

select * from run where name like %NIR_% 

結果集還包括像

NIRMeta_Invalid 
NIRMeta_Position 

的名字我不知道我做錯了。我只需要選擇以NIR_開頭的名字。

回答

3

如果您希望將其視爲文字,您需要在LIKE模式中轉義下劃線。

在SQL Server:

select * from run where name like 'NIR[_]%' 

在MySQL和Oracle:

select * from run where name like 'NIR\_%' 
+0

對不起,我忘了提,我使用SQL服務器2014年是第一個SELECT語句的作品。謝謝。 – Abe

1

如果你想的名字,只有擁有NIR啓動,然後刪除like模式的第一個通配符:

where name like 'NIR_%' 

注意_也是一個通配符,所以你可能想:

where name like 'NIR\_%' 
0

您可以使用ESCAPE選項來實現這一目標。

SELECT * FROM run WHERE name LIKE 'NIR#_%' ESCAPE '#' 

樣品執行與給定的數據:

DECLARE @Run TABLE (name VARCHAR (100)); 

INSERT INTO @Run (name) VALUES 
('NIR_MA'), ('NIR_RUN'), ('NIRMeta_Invalid'), ('NIRMeta_Position'); 

SELECT * FROM @Run WHERE name LIKE 'NIR#_%' ESCAPE '#' 

結果:

name 
----- 
NIR_MA 
NIR_RUN