过滤选择值以NIR_开头的位置

时间:2016-07-11 12:06:47

标签: sql sql-server wildcard sql-like startswith

我正在尝试将结果集过滤为仅返回以NIR_开头的值。

我这样做的SQL语句如下

select * from run where name like %NIR_% 

结果集还包括

之类的名称
NIRMeta_Invalid
NIRMeta_Position 

我不确定我做错了什么。我只需要选择以NIR_开头的名称。

3 个答案:

答案 0 :(得分:3)

如果您希望将其视为文字,则需要以LIKE模式转义下划线。

在SQL Server中:

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

在MySQL和Oracle中:

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

答案 1 :(得分:1)

如果您希望名称仅以NIR开头,请删除like模式中的第一个通配符:

where name like 'NIR_%'

请注意,_也是通配符,因此您可能需要:

where name like 'NIR\_%'

答案 2 :(得分: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