LEFT、RIGHT、CHARINDEX,SUBSTRING示例应用
/*
原因是网上挂号的病人,年龄问题,比如五年前是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
相关文章