使用 SQL 过滤掉其中包含括号和字母 A 或 B 的文件名的最佳方法是什么?

what is the best way using SQL to filter out file name with bracket and letter A or B inside of it?

Select filename

from cleansedreports s with (nolock)
where not exists (select 1
                  from (values ('D2'), ('P2')) v(Filename)
                  where s.Filename like '%' + v.Filename + '%')

所以上面的查询基本上过滤掉了所有文件名中包含D2或P2的文件名,有没有办法过滤掉其中的任何D或P(如filanmes,如D5,F27)。所有这些文件名的共同点是它们里面有括号,比如 augustsalesreport[D21]、Julysalesreport[P23].

什么是最好的过滤掉所有括号内有字母 D 或 P 的文件的最佳方法?

您可以使用正则表达式

CREATE TABLE cleansedreports (filename varchar(30));
  
INSERT INTO cleansedreports VALUES  ('augustsalesreport[D21]'),('Julysalesreport[P23]'),('Julysalesreport[F23]')
GO

3 行受影响

SELECT * FROM cleansedreports WHERE filename LIKE '%[[][D|P][0-9]%]'
GO
| filename               |
| :--------------------- |
| augustsalesreport[D21] |
| Julysalesreport[P23]   |

db<>fiddle here