SQL Server 2016中如何仅替换独立Coat字符串而非Furry Coat
精准替换以"Coat"开头的字符串(排除"Furry Coat")
在SQL Server 2016中,你可以通过CASE语句结合模式匹配实现需求,只替换以"Coat"开头且不属于"Furry Coat"系列的字符串,以下是两种简洁的实现写法:
方法1:使用SUBSTRING拼接
SELECT CASE WHEN Type LIKE 'Coat%' AND Type NOT LIKE 'Furry Coat%' THEN 'Skinny Coat' + SUBSTRING(Type, 5, LEN(Type)) ELSE Type END AS Type FROM YourTableName;
方法2:使用STUFF函数替换
SELECT CASE WHEN Type LIKE 'Coat%' AND Type NOT LIKE 'Furry Coat%' THEN STUFF(Type, 1, 4, 'Skinny Coat') ELSE Type END AS Type FROM YourTableName;
逻辑说明:
LIKE 'Coat%':筛选所有以"Coat"开头的记录NOT LIKE 'Furry Coat%':排除以"Furry Coat"开头的记录,避免误替换- 符合条件的记录:
- 方法1用"Skinny Coat"拼接原字符串从第5位开始的内容(跳过原开头的"Coat")
- 方法2用
STUFF直接将原字符串前4个字符("Coat")替换为"Skinny Coat"
- 不符合条件的记录直接保留原
Type值
处理后,"Coat 2"会变为"Skinny Coat 2","Furry Coat 1"则保持不变。
内容的提问来源于stack exchange,提问作者Jdbfkfo
相关产品推荐
相关产品推荐

