在值以 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
我正在尝试将我的结果集过滤为仅以 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