Sql server 2008 从另一张桌子上拿下一年
我有一个名为“SALARY ON”的字段,其中输入的数据(年-月)格式为“2012-01”(数据类型varchar),位于名为Table1的表中。要创建sp,我只需要从上述表字段中选择2012。我怎样才能做到这一点。Sql server 2008 从另一张桌子上拿下一年,sql-server-2008,sql-server-2008-r2,Sql Server 2008,Sql Server 2008 R2,我有一个名为“SALARY ON”的字段,其中输入的数据(年-月)格式为“2012-01”(数据类型varchar),位于名为Table1的表中。要创建sp,我只需要从上述表字段中选择2012。我怎样才能做到这一点。 请帮我解决这个问题 在最简单的情况下,“子字符串”和“强制转换”将为您提供: SELECT CAST(SUBSTRING([SALARY ON], 1, 4) AS INT) FROM SALARY 这取决于日期是以YYYY-MM格式输入的。如果在约束中检查此项,则上面的示例就可
请帮我解决这个问题 在最简单的情况下,“子字符串”和“强制转换”将为您提供:
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
然后,根据调用sp的环境,您可以将返回的所有年份都记为-1,并向用户提出错误,将其过滤掉,将其写入日志文件等。在最简单的情况下,“子字符串”和“强制转换”将帮您完成:
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
然后,根据调用sp的环境,您可以将返回的所有年份都记为-1,并向用户提出错误、将其过滤掉、将其写入日志文件等。感谢PETER先生的帮助。此答案符合我的要求。谢谢。谢谢彼得先生的帮助。这个答案符合我的要求。谢谢你。