我有一个名为'SALARY ON'的字段,其中输入的数据(年 - 月)的格式为'2012-01'(数据类型varchar),名为Table1表。对于创建sp,我需要从上面仅使用2012提到的表字段。我怎样才能做到这一点。 请帮我解决这个问题。
答案 0 :(得分:1)
在最简单的情况下,'SUBSTRING'和'CAST'将为您完成:
SELECT CAST(SUBSTRING([SALARY ON], 1, 4) AS INT) FROM SALARY
这取决于日期是以YYYY-MM格式输入的。如果你在约束中检查这个,那么上面的样本就可以了。否则,在尝试转换之前,您需要进行一些模式检查:
SELECT CASE WHEN [SALARY ON] LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9]' THEN SUBSTRING([SALARY ON], 1, 4) AS INT) ELSE -1 END
然后,您可以将返回的所有年份作为-1,并向用户提出错误,将其过滤掉,将它们写入日志文件等,具体取决于调用sp的环境。