如何 select 仅以特定前缀开头的字符串
How to select the strings that only begin with specific prefixes
我正在尝试过滤我的查询以仅获取以这些前缀开头的字符串:
**AC / AY / AN / AZ / IR **
为此,我尝试了这个 SQL 查询:
select PN from MyTestTable where PN like 'AC%' AND PN like 'AY%' AND PN like 'AN%' AND PN like 'AZ%' AND PN like 'IR %' ;
有没有办法使用列表或其他方式进行过滤?
创建临时 table 并使用连接:
DECLARE @Pref TABLE (val nvarchar(20))
INSERT INTO @Pref
VALUES
('AC'),
('AY'),
('AN'),
('AZ'),
('IR')
SELECT t.PN
FROM MyTestTable AS t
INNER JOIN @Pref p ON t.PN LIKE p.val+'%'
您可以将 like
与一堆 or
条件一起使用。或者使用 regexp_like()
:
select PN
from MyTestTable
where regexp_like(PN, '^(AC|AY|AN|AZ|IR )')
注意:这包括 'IR'
之后的 space,这似乎是问题的一部分。如果不需要,你也可以使用:
where left(PN, 2) in ('AC', 'AY', 'AN', 'AZ', 'IR')
您可以使用以下查询来完成:
SELECT PN FROM MyTestTable WHERE SUBSTR(PN,1,2) IN ('AC','AY','AN','AZ','IR')
我希望这对你有用。
我正在尝试过滤我的查询以仅获取以这些前缀开头的字符串:
**AC / AY / AN / AZ / IR **
为此,我尝试了这个 SQL 查询:
select PN from MyTestTable where PN like 'AC%' AND PN like 'AY%' AND PN like 'AN%' AND PN like 'AZ%' AND PN like 'IR %' ;
有没有办法使用列表或其他方式进行过滤?
创建临时 table 并使用连接:
DECLARE @Pref TABLE (val nvarchar(20))
INSERT INTO @Pref
VALUES
('AC'),
('AY'),
('AN'),
('AZ'),
('IR')
SELECT t.PN
FROM MyTestTable AS t
INNER JOIN @Pref p ON t.PN LIKE p.val+'%'
您可以将 like
与一堆 or
条件一起使用。或者使用 regexp_like()
:
select PN
from MyTestTable
where regexp_like(PN, '^(AC|AY|AN|AZ|IR )')
注意:这包括 'IR'
之后的 space,这似乎是问题的一部分。如果不需要,你也可以使用:
where left(PN, 2) in ('AC', 'AY', 'AN', 'AZ', 'IR')
您可以使用以下查询来完成:
SELECT PN FROM MyTestTable WHERE SUBSTR(PN,1,2) IN ('AC','AY','AN','AZ','IR')
我希望这对你有用。