SQL中如何在DECLARE声明语句中仅输入字符串前4位实现匹配查询
可以通过SQL的LIKE关键字加通配符实现该需求,你只需要调整WHERE条件的匹配逻辑即可,修改后的代码如下:
declare @campaignNo varchar(60) -- 仅传入前4位数字即可 set @campaignNo = '0029' Select Count(PUR1.intTimestamp) AS #start From [MicrobialScreening].[dbo].[PUR_IDs] as ID INNER JOIN [MicrobialScreening].[dbo].[PUR_Purification1] AS PUR1 ON id.intID=pur1.intID -- 用LIKE前缀匹配,%为通配符,匹配任意长度的任意后续字符 where id.strCampaign LIKE @campaignNo + '%'
补充说明
- 代码里的
%是SQL标准通配符,代表匹配0个或多个任意字符,刚好满足「strCampaign前4位等于传入值、后续内容任意」的匹配要求 - 如果需要严格限制前4位后必须有其他内容,可以把匹配规则改为
@campaignNo + '_%',下划线代表匹配1个任意字符,避免匹配到只有4位长度的strCampaign值。如果下划线是你实际业务中第5位的固定字符,需要转义的话可以写成@campaignNo + '\_%' ESCAPE '\' - 前缀匹配的LIKE语句可以用到strCampaign字段的索引,不会出现全表扫描的性能问题
内容的提问来源于stack exchange,提问作者Anders
相关产品推荐
相关产品推荐

