【问题标题】:Is there a way to extract individual values from a varchar column using SQL Server 2016?有没有办法使用 SQL Server 2016 从 varchar 列中提取单个值?
【发布时间】:2021-01-04 19:29:08
【问题描述】:

我正在尝试从 SQL Server 2016 平板电脑中的 varchar 列中提取单个日期,这些日期以逗号分隔,但不知道如何继续。数据设置如下:

article            Consolidation_Order_Cut_Off_Final_Allocation
------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
011040             01/13/2021,03/10/2021
019099             01/13/2021,01/27/2021,02/24/2021,03/24/2021,04/28/2021,05/26/2021,06/23/2021,07/28/2021
019310             01/27/2021,02/03/2021,03/10/2021,04/14/2021,05/12/2021,06/09/2021,07/14/2021,08/11/2021
059611             01/13/2021

理想情况下 - 我会将每个日期拆分为一个新行。我见过一些类似的问题,它们使用了非常复杂的函数,但似乎是针对 SQL Server 2008 的。我还发现了新函数 STRING_SPLIT,但这似乎是表值,因此必须在 FROM .我的一个想法是声明一个变量来保存此列,然后使用select * FROM string_split(@dates,','); 之类的东西,但是因为该列表中有多个值返回错误。我对 2016 版 SQL Server 非常陌生,想知道是否有人遇到了解决此问题的方法。

【问题讨论】:

    标签: sql-server string split


    【解决方案1】:

    String_Split() 是一个表值函数,因此您可以使用 CROSS APPLY 调用它

    示例或dbFiddle

    Select A.article
          ,B.Value
     From  YourTable A
     Cross Apply string_split(Consolidation_Order_Cut_Off_Final_Allocation,',') B
    

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多