如何在MSSQL中从列提取最后两位并转换为年份计算列?
在MSSQL中为MyTable创建年份计算列
当然可以创建这样的计算列,以下提供两种实用实现方式:
1. 查询时动态生成年份列
如果不需要将年份列永久存储在表中,直接在SELECT查询里提取转换即可:
SELECT [Column A] AS [列], '20' + RIGHT([Column A], 2) AS [年份] FROM MyTable;
示例效果
输入数据:
| 列 |
|---|
| 10515121 |
| 05111512 |
| 23334305 |
执行查询后结果:
| 列 | 年份 |
|---|---|
| 10515121 | 2021 |
| 05111512 | 2012 |
| 23334305 | 2005 |
2. 添加持久化计算列到表中
如果希望年份列作为表的永久字段存在,用ALTER TABLE语句添加即可:
ALTER TABLE MyTable ADD [年份] AS '20' + RIGHT([Column A], 2) PERSISTED;
- 带
PERSISTED关键字会把计算结果物理存储在表中,能提升后续查询性能;不需要持久化的话可以去掉该关键字,查询时动态计算。 - 若存在
[Column A]长度不足2位的异常记录,可通过CASE语句兼容处理:
ALTER TABLE MyTable ADD [年份] AS CASE WHEN LEN([Column A]) >= 2 THEN '20' + RIGHT([Column A], 2) ELSE NULL -- 也可根据业务需求设置默认值 END PERSISTED;
添加完成后,直接查询表就能看到年份列:
SELECT [Column A] AS [列], [年份] FROM MyTable;
内容的提问来源于stack exchange,提问作者Suat Atan PhD
相关产品推荐
相关产品推荐

