You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在使用STRING_SPLIT拆分字符串时保留NULL值记录

问题原因

过滤条件写在外层WHERE子句时,当原记录Fig字段为NULL,STRING_SPLIT函数无返回结果,OUTER APPLY关联后对应的f.value为NULL,而SQL中NULL NOT LIKE 'MB%'的判断结果为UNKNOWN,会被WHERE条件直接过滤,最终导致Fig为NULL的记录丢失。

解决方案

将针对拆分结果的过滤逻辑,从外层WHERE子句移动到OUTER APPLY的内部子查询中。此时过滤规则仅作用于拆分生成的字符串片段,不会影响原表中无有效拆分结果的记录(即Fig为NULL的记录),修改后的代码如下:

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

执行上述语句后:

  • Fig非空的记录会正常拆分,自动过滤掉以'MB'开头的拆分片段,和原有逻辑一致
  • Fig为NULL的id=3记录会被保留,codePub和FigRef字段均返回NULL
  • 最终返回总记录数为预期的6条

内容的提问来源于stack exchange,提问作者user19435415

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:06:30