首页 > 解决方案 > 如何从sql中YYYYMM格式的字符串列表中获取一个月?

问题描述

我有一个由逗号分隔的YYYYMM格式字符串列表

('202001', '202003', '202012')

我想将其转换为表格中的每一行。

monthNumber
-----------
Month1
Month3
Month12

我知道如何处理一个字符串而不是列表。

select CONCAT('Month', (datepart(month,('200602')+'01'))) as monthNumber.

更新的问题:

有没有办法将字符串列表转换为表中的每一行?根据@Gordon Linoff的评论,如果 SQL SERVER 不支持它,除了WHERE IN子句。SQL Server 中有什么魔法可以将WHERE IN子句值转换为表中的每一行?任何帮助,将不胜感激。

标签: sqlsql-server

解决方案


首先,您需要将该字符串“列表”转换为可用的东西。你如何做到这一点决定了源数据/“列表”的格式

最简单的方法之一:

SELECT *
FROM (
     VALUES ('202001'), ('202003'), ('202012')
) AS monthInfo(strDate)

然后只得到月份数

select CONCAT('Month', (datepart(month,(mi.strDate)+'01'))) as monthNumber
from monthInfo mi

推荐阅读