SQL Server 2022如何精准筛选前缀为'Chain'的产品数据?
筛选名称为'Chain'或以'Chain '开头的SQL Server记录
你当前的LIKE 'Chain%'会匹配所有以Chain开头的字符串,不管后续字符是空格还是其他内容,所以Chainring这类也被包含进来了。要得到你期望的结果,需要精准匹配两种情况:要么名称就是Chain,要么名称以Chain (注意末尾的空格)开头。
以下是几种可行的实现方式:
方法一:用OR组合精确匹配和前缀匹配
这是最直观的写法,直接明确筛选条件:
SELECT ProductID, Name FROM Production.Product WHERE Name = 'Chain' OR Name LIKE 'Chain %';
Name = 'Chain'匹配完全等于Chain的记录Name LIKE 'Chain %'匹配以Chain(带空格)开头的记录,这样就能排除Chainring这类后面直接跟非空格字符的情况
方法二:通过字符串位置判断
利用字符串函数判断Chain之后的字符要么不存在(即字符串长度等于5),要么是空格:
SELECT ProductID, Name FROM Production.Product WHERE LEFT(Name, 5) = 'Chain' AND (LEN(Name) = 5 OR SUBSTRING(Name, 6, 1) = ' ');
LEFT(Name,5) = 'Chain'确保前5个字符是ChainLEN(Name)=5对应名称就是Chain的情况SUBSTRING(Name,6,1)=' '对应第6个字符是空格的情况
执行上述任意一种语句,就能得到你期望的结果:
ProductID Name ------------------------- 952 Chain 324 Chain Stays
内容的提问来源于stack exchange,提问作者Fergus Pham
相关产品推荐
相关产品推荐

