在值以 NIR_ 开头的 select 中过滤

Filter in select where values start with NIR_

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

我的SQL声明如下

select * from run where name like %NIR_% 

结果集还包括像

这样的名字
NIRMeta_Invalid
NIRMeta_Position 

我不确定我做错了什么。我只需要 select 以 NIR_.

开头的名称

如果您希望它被视为文字,您需要转义 LIKE 模式中的下划线。

在SQL服务器中:

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

在 MySQL 和 Oracle 中:

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

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

where name like 'NIR_%'

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

where name like 'NIR\_%'

您可以使用 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