我正在尝试将结果集过滤为仅返回以NIR_
开头的值。
我这样做的SQL语句如下
select * from run where name like %NIR_%
结果集还包括
之类的名称NIRMeta_Invalid
NIRMeta_Position
我不确定我做错了什么。我只需要选择以NIR_
开头的名称。
答案 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