【发布时间】:2026-01-30 16:40:01
【问题描述】:
好吧,这听起来可能是个菜鸟问题,但 SQL 并不是我真正的强项,所以我在这里请求一些帮助。
我正在尝试实现一些东西,但我担心性能问题。
我要解决的问题是这样的:
我有一列有很多用逗号分隔的数据 "," 像这样:data1,data2,data3,data57
我需要的是遍历每条数据,用逗号分隔所有记录,然后然后用那条数据做一些事情,你明白了吗?
我找到了can actually help me的解决方案,但我担心系统性能,因为我可能需要使用不同的参数多次调用该函数!
每次调用表值函数 (UDF) 时都会创建一个表,还是 sql 服务器将其保存为缓存? [也许我宁愿需要一个临时表?]
提前感谢您的帮助!
注意:数据不是我的,我应该按原样使用它,所以建议更改数据库是不可能的(但我知道这是最好的情况)。 一种 注意2:这个问题/问题的目的是将初始数据导入数据库,性能可能不是一个严重的问题,因为它不会运行很多次,但我还是想考虑这个问题,并且尽我所能!
【问题讨论】:
-
是的。该函数将在
tempdb中创建一个条目并填充它,然后在每次调用时处理它。 -
好吧...感谢您的评论!请写一个正确的答案,我很乐意接受它:)
-
顺便说一下,如果您能提供更好的解决方案来解决这个问题,请成为我的客人,我将不胜感激:)
-
等等,既然你在 SQL Server 2016 中工作,为什么不使用STRING_SPLIT?
-
稍有耐心(比如 SQL Server 2018?),您将使用 STRING_AGG 反过来。在此之前,您可以使用 FOR XML PATH('') 技巧将字符串连接回逗号分隔的字符串。
标签: sql user-defined-functions udf sql-server-2016 table-valued-parameters