LEFT、RIGHT、CHARINDEX,SUBSTRING示例应用

2023-03-20 00:00:00 格式 天数 年龄 更方便 尴尬
/*
原因是网上挂号的病人,年龄问题,比如五年前是1岁,现在从网上挂号后,年龄还是一岁;
存储过程中有一个计算年龄的函数,但是调取的格式为1Y8M,也就是1岁零八月,
或者9M(9个月)这样;
想办法把年龄分开,如果带Y,只取年龄不取月份,否则支取月份,在加上年龄单位
然后在分别赋值给年龄和年龄单位。
*/
DECLARE 
	@I INT,	
	@K VARCHAR(10),--格式化后的年龄
	@AGE INT,--年龄
	@P VARCHAR(10)--年龄单位Y,M
SET @K='25Y10M'
SELECT @I=CHARINDEX('Y', @K)
IF @I=
	BEGIN
	 SET @AGE=LEFT(@K,LEN(@K)-1)
	 SELECT @AGE 
	 SET @P=RIGHT(@K,1) --SET @P='M'这样更方便(2019-07-10 更新,
--今天发现,不能直接写死,如果遇到这种格式的20Y08M29D 就尴尬了,不能显示带天数格式的日期了。)
	 SELECT @P
	END
ELSE
	BEGIN
	 SET @AGE=LEFT(@K,CHARINDEX('Y',@K)-1)
	 SELECT @AGE
	 SET @P=SUBSTRING(@K,CHARINDEX('Y',@K),1) --SET @P='Y'这样更方便
	 SELECT @P
	END

相关文章