Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 从另一张桌子上拿下一年_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 从另一张桌子上拿下一年

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格式输入的。如果在约束中检查此项,则上面的示例就可

我有一个名为“SALARY ON”的字段,其中输入的数据(年-月)格式为“2012-01”(数据类型varchar),位于名为Table1的表中。要创建sp,我只需要从上述表字段中选择2012。我怎样才能做到这一点。
请帮我解决这个问题

在最简单的情况下,“子字符串”和“强制转换”将为您提供:

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先生的帮助。此答案符合我的要求。谢谢。谢谢彼得先生的帮助。这个答案符合我的要求。谢谢你。