如何选择仅以特定前缀开头的字符串
Posted
技术标签:
【中文标题】如何选择仅以特定前缀开头的字符串【英文标题】:How to select the strings that only begin with specific prefixes 【发布时间】:2021-08-30 09:44:56 【问题描述】:我正在尝试过滤我的查询以仅获取以这些前缀开头的字符串:
**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 %' ;
有没有办法使用列表或其他方式进行过滤?
【问题讨论】:
不是想要的答案,但AND
s 应该是OR
s
WHERE condition1 OR condition2 OR condition3 ....
【参考方案1】:
您可以使用以下查询:
SELECT PN FROM MyTestTable WHERE SUBSTR(PN,1,2) IN ('AC','AY','AN','AZ','IR')
我希望这对你有用。
【讨论】:
【参考方案2】:创建临时表并使用连接:
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+'%'
【讨论】:
【参考方案3】:您可以将like
与一堆or
条件一起使用。或者使用regexp_like()
:
select PN
from MyTestTable
where regexp_like(PN, '^(AC|AY|AN|AZ|IR )')
注意:这包括'IR'
之后的空格,这似乎是问题的一部分。如果不需要,也可以使用:
where left(PN, 2) in ('AC', 'AY', 'AN', 'AZ', 'IR')
【讨论】:
regexp_like 是 db2 中的有效正则表达式吗?因为使用您提供的查询时出现错误:[42601] [- 104] [SQL0104] 语法元素以上是关于如何选择仅以特定前缀开头的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在执行复制到命令以选择具有固定前缀的文件时提供正则表达式模式?