如何 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')

我希望这对你有用。