SQL Server 2016 引入了STRING_SPLIT,它速度非常快,是人们在 2016 年之前推出的任何自制实现的绝佳替代品。
不幸的是,STRING_SPLIT 仅支持单字符分隔符,这并不总是足够的。有谁知道允许在分隔符中使用多个字符的良好实现?
SQL Server 2016 引入了STRING_SPLIT,它速度非常快,是人们在 2016 年之前推出的任何自制实现的绝佳替代品。
不幸的是,STRING_SPLIT 仅支持单字符分隔符,这并不总是足够的。有谁知道允许在分隔符中使用多个字符的良好实现?
好吧,您始终可以
REPLACE
在传入参数之前使用它向参数添加单字符分隔符。您只需要选择一个不太可能/不可能出现在实际数据中的字符。在此示例中,假设您的原始数据使用三个管道作为分隔符;我随机选择了一个 Unicode 字符来代替:我在这里更详细地写了这篇博客:
发表评论:
好的,让我们接受您的输入,看看我的解决方案是否得到错误的输出。
结果是:
而不是你必须假设(但没有测试)的:
如果您的数据在表中,您可以创建一个视图,这样您就不必将该表达式考虑到所有查询中。
如果这不起作用,因为您的数据中可能有
✏
铅笔(STRING_SPLIT()
, 因为它被硬编码为接受单个字符分隔符 (separator Is a single character expression
)。替代方案已经在这里回答了几十次,很多以前
STRING_SPLIT()
存在过。这些方法仍然有效。我在本系列中讨论了许多替代方案,并讨论了
STRING_SPLIT()
, 中的限制(我还讨论了为什么你可能会考虑不使用任何方法在 T-SQL 中执行此操作):