sql - 当 monthid 为 2 位数字时,在 SQL Server 2008 R2 中连接失败

标签 sql sql-server tsql sql-server-2008-r2 concatenation

我有一个类似的表,服务器是 SQL Server 2008 R2,我们不能在其中使用 concat 函数

YearID  |   MonthId     
--------+----------
2017    |    1  
2014    |    5  
2014    |   10  
2016    |   12

我想要输出为

201701   
201405   
201410   
201612

到目前为止我尝试了什么

select 
    cast(YearId as varchar(50)) + '0' + cast(MonthId as varchar(50)) 
from 
    TEST

我得到的输出为

201701     
201405   
2014010   
2016012  

monthID为2位数字时,失败。

如何解决这种情况?

最佳答案

你可以简单地这样做:

SELECT CAST(YearID * 100 + MonthID AS VARCHAR(6))
FROM mytable

注意,我们在这里只使用了一个强制转换操作和算术操作。没有使用额外的检查和功能。

关于sql - 当 monthid 为 2 位数字时,在 SQL Server 2008 R2 中连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47363445/

相关文章:

MySQL 错误 1064 和 1146

sql - postgres 中的 SELECT COUNT sql 函数总是出错,非 SETOF

php - 加快大型 SQL 表的处理速度

c# - 如何从 C# 函数的存储过程返回多个输出参数

java - 为什么 Hibernate 会为 @ManyToOne 关联的隐式连接生成 CROSS JOIN?

sql-server - SQL - 从合并查询过滤器获取数据库名称

sql - 存储过程算法需要 9 个小时 - 这样做的更好方法?

sql-server - 是否有更好的方法从 SQL Server 中的 XML 列中检索多个值

sql - 将执行动态查询的结果插入表中

sql-server - 为什么SELECT可以有SIU锁(SQL Server 2012)?