SQL多个LIKE语句

Rus*_*ter 6 sql t-sql sql-server variables sql-like

我目前正在撰写一份报告,向我展示销售团队所涵盖的所有邮政编码.

每个团队涵盖100多个邮政编码.我想要做的是创建一个报告,将邮件代码中的客户端带回来.目前我的代码看起来像这样.

SELECT * FROM tbl_ClientFile
WHERE CLNTPOST1 LIKE ('B79%')
OR CLNTPOST1 LIKE ('BB1%')
OR CLNTPOST1 LIKE ('BB10%')
OR CLNTPOST1 LIKE ('BB11%')
OR CLNTPOST1 LIKE ('BB12%')
OR CLNTPOST1 LIKE ('BB18%')
OR CLNTPOST1 LIKE ('BB2%')
OR CLNTPOST1 LIKE ('BB3%')
OR CLNTPOST1 LIKE ('BB4%')
OR CLNTPOST1 LIKE ('BB5%')
OR CLNTPOST1 LIKE ('BB6%')
OR CLNTPOST1 LIKE ('BB8%')
OR CLNTPOST1 LIKE ('BB9%')
OR CLNTPOST1 LIKE ('BB94%')
OR CLNTPOST1 LIKE ('BD1%')
OR CLNTPOST1 LIKE ('BD10%')
OR CLNTPOST1 LIKE ('BD11%')
OR CLNTPOST1 LIKE ('BD12%')
OR CLNTPOST1 LIKE ('BD13%')
OR CLNTPOST1 LIKE ('BD14%')
OR CLNTPOST1 LIKE ('BD15%')
OR CLNTPOST1 LIKE ('BD16%')
OR CLNTPOST1 LIKE ('BD17%')
OR CLNTPOST1 LIKE ('BD18%')
OR CLNTPOST1 LIKE ('BD19%')
OR CLNTPOST1 LIKE ('BD2%')
OR CLNTPOST1 LIKE ('BD20%')
OR CLNTPOST1 LIKE ('BD21%')
OR CLNTPOST1 LIKE ('BD22%')
OR CLNTPOST1 LIKE ('BD3%')
OR CLNTPOST1 LIKE ('BD4%')
OR CLNTPOST1 LIKE ('BD5%')
OR CLNTPOST1 LIKE ('BD6%')
Run Code Online (Sandbox Code Playgroud)

我所希望的是有一种更快更简单的方法.任何建议将不胜感激.有没有办法为每个销售团队创建一个变量@SalesTeam1 = SELECT * FROM tbl_ClientFile WHERE POSTCODE1 like '' or like ''

真正钓鱼的想法.干杯

小智 9

使用 CTE 作为
(
选择值
从 (
        值 ('B79'), ('BB1'), ('BB10'), ('BB11'), ('BB12'), ('BB18'), ('BB2'), ('BB3'), ( 'BB4'), ('BB5'), ('BB6'), ('BB8'), ('BB9'), ('BB94'), ('BD1'), ('BD10'), ('BD11 '), ('BD12'), ('BD13'), ('BD14'),
                ('BD15'), ('BD16'), ('BD17'), ('BD18'), ('BD19'), ('BD2'), ('BD20'), ('BD21'), (' BD22'), ('BD3'), ('BD4'), ('BD5'), ('BD6')
     ) V(值)
)   

选择 * 从 tbl_ClientFile T WHERE EXISTS (SELECT TOP 1 1 from CTE WHERE T.CLNTPOST1 LIKE CTE.VALUE + '%')


Gio*_*uri 5

可能的解决方案之一。创建一个表Prefix(v varchar(4)),您可以在其中插入这些值。那么一个解决方案是:

SELECT * 
FROM tbl_ClientFile cf
JOIN Prefix p on cf.CLNTPOST1 LIKE p.v + '%'
Run Code Online (Sandbox Code Playgroud)

如果某些前缀包含其他前缀,如,,... BB1,则要排除重复项:BB10BB15

SELECT DISTINCT cf.* 
FROM tbl_ClientFile cf
JOIN Prefix p on cf.CLNTPOST1 LIKE p.v + '%'
Run Code Online (Sandbox Code Playgroud)