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

基于.NET正则的SQL CLR分割函数处理双竖线问题咨询

解决SQL CLR正则分割中区分有效|的问题

这问题我之前处理过类似场景,核心就是要精准区分哪些|是分割符,哪些是内容的一部分。根据你的需求——右侧值确定是数字,我们可以用正则的**正向预查(Positive Lookahead)**来实现精准分割。

具体解决方案

把原来的分割正则[|]替换成:

\|(?=\d)

正则解释

  • \|:匹配|字符(因为|在正则中是特殊的逻辑或符号,必须用反斜杠转义才能匹配字面量)
  • (?=\d):正向预查断言,确保当前匹配的|后面紧跟一个数字(\d代表0-9的任意数字)

这样一来,只有那些后面直接跟着数字的|才会被当作分割符。拿你的例子“慂||2215”来说:

  • 第一个|后面是另一个|,不满足预查条件,不会被匹配
  • 第二个|后面是数字2,符合预查条件,会被当作分割点
    最终分割结果就是["慂|", "2215"],完全符合你的预期。

扩展适配(可选)

如果你的右侧数字可能包含正负号或者小数点,可以稍微调整预查部分:

  • 支持正负号:\|(?=[+-]?\d)
  • 支持小数:\|(?=\d|\.\d)
    不过根据你描述的场景,基础版本的正则已经足够覆盖需求。

使用注意

在SQL中传递这个正则给CLR函数时,要注意字符串转义:如果是Unicode字符串,记得用N前缀,比如:

SELECT dbo.YourSplitFunction('慂||2215', N'\|(?=\d)')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:05:39