如何按年-月间隔过滤列并提取质保期相关信息?
实现思路建议
1. 先解析原始数据
原始数据格式为+Year-Month,首先需要从字符串中提取出年和月的数值:
- 去掉开头的
+符号,得到类似0-0、1-6的字符串 - 按
-分割字符串,分别获取年、月对应的数字(转成数值类型,方便后续判断)
2. 用条件判断实现需求
根据提取的年、月数值,结合CASE或IF ELSE结构编写逻辑:
- 核心判断:如果年和月的数值都为0,直接返回
No Warranty - 若周期大于0,根据年、月的实际值组合成自然表述:
- 年数>0且月数>0:返回
X年Y个月(比如1年6个月) - 仅年数>0:返回
X年 - 仅月数>0:返回
Y个月
- 年数>0且月数>0:返回
示例代码参考
SQL场景(用CASE结构)
SELECT original_column, CASE WHEN SUBSTRING(original_column, 2, CHARINDEX('-', original_column)-2) = '0' AND SUBSTRING(original_column, CHARINDEX('-', original_column)+1, LEN(original_column)) = '0' THEN 'No Warranty' ELSE CONCAT( CASE WHEN SUBSTRING(original_column, 2, CHARINDEX('-', original_column)-2) > '0' THEN CONCAT(SUBSTRING(original_column, 2, CHARINDEX('-', original_column)-2), '年') ELSE '' END, CASE WHEN SUBSTRING(original_column, CHARINDEX('-', original_column)+1, LEN(original_column)) > '0' THEN CONCAT(SUBSTRING(original_column, CHARINDEX('-', original_column)+1, LEN(original_column)), '个月') ELSE '' END ) END AS warranty_info FROM your_table;
Excel场景(用IF嵌套)
假设数据在A列,B列写入公式:
=IF(LEFT(A1,2)="+0", "No Warranty", CONCAT( IF(MID(A1,2,FIND("-",A1)-2)*1>0, MID(A1,2,FIND("-",A1)-2)&"年", ""), IF(RIGHT(A1,LEN(A1)-FIND("-",A1))*1>0, RIGHT(A1,LEN(A1)-FIND("-",A1))&"个月", "") ) )
内容的提问来源于stack exchange,提问作者Jony_Junior
相关产品推荐
相关产品推荐

