【问题标题】:How to keep NULL values in STRING_SPLIT如何在 STRING_SPLIT 中保留 NULL 值
【发布时间】:2022-06-28 22:06:55
【问题描述】:

请原谅格式,这是我的第一篇文章。

我有一张如下表:

id code Fig
1 AAA MB010@2-1-2-5A@2-2-3
2 AAB MB010@2-3-4-2@2-2A-2-4
3 AABA NULL
4 AAC MB020@2-5-3A

我的代码如下:

  SELECT 
     source.id
    ,source.code
    ,codePub = LEFT(source.Fig,5)
    ,f.value AS [FigRef]
  FROM [dbo].[sourceData] AS source
  OUTER APPLY STRING_SPLIT(source.[Fig], '@') as f
  WHERE f.value NOT LIKE 'MB%'

这给了我下表:

id code codePub FigRef
1 AAA MB010 2-1-2-5A
1 AAA MB010 2-2-3
2 AAB MB010 2-3-4-2
2 AAB MB010 2-2A-2-4
4 AAC MB020 2-5-3A

但我也想要具有 NULL 值的代码,如下所示:

id code codePub FigRef
1 AAA MB010 2-1-2-5A
1 AAA MB010 2-2-3
2 AAB MB010 2-3-4-2
2 AAB MB010 2-2A-2-4
3 AABA NULL NULL
4 AAC MB020 2-5-3A

如何保留 NULL Fig 值的代码?

【问题讨论】:

    标签: sql sql-server split


    【解决方案1】:

    应该很简单,只需将 isnull 放在拆分值周围:

     SELECT 
         source.id
        ,source.code
        ,codePub = LEFT(source.Fig,5)
        ,f.value AS [FigRef]
      FROM [dbo].[sourceData] AS source
      OUTER APPLY STRING_SPLIT(isnull(source.[Fig],'NULL'), '@') as f
      WHERE f.value NOT LIKE 'MB%'
    

    【讨论】:

      【解决方案2】:

      你也许可以在这里使用联合:

      SELECT 
          source.id,
          source.code,
          codePub = LEFT(source.Fig, 5),
          f.value AS [FigRef]
      FROM [dbo].[sourceData] AS source
      OUTER APPLY STRING_SPLIT(source.[Fig], '@') as f
      WHERE f.value NOT LIKE 'MB%'
      UNION ALL
      SELECT id, code, Fig, NULL
      FROM [dbo].[sourceData]
      WHERE Fig IS NULL;
      

      【讨论】:

        猜你喜欢
        • 2015-01-22
        • 2011-02-08
        • 2014-01-10
        • 2022-11-15
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 2020-12-30
        • 1970-01-01
        相关资源
        最近更新 更多