sqlServer2008 select F1 from f_splitstr(@AssModName,', ') F1 列的数据如何去重
时间: 2024-09-22 13:08:33 浏览: 49
f_splitstr(分割字符串).sql
在SQL Server 2008中,由于缺乏内置的`DISTINCT`关键字用于分组集合函数返回的结果,你可以通过创建临时表或者变量来间接实现去重。假设`f_splitstr`是你自定义的一个函数,它会返回一个包含逗号分隔值的数组,你可以这样做:
```sql
DECLARE @tempTable TABLE (
ID INT IDENTITY(1,1),
F1 VARCHAR(MAX)
)
INSERT INTO @tempTable(F1)
EXEC sp_executesql N'SELECT value
FROM STRING_SPLIT(@AssModName, ', ')
WHERE value IS NOT NULL', N'@AssModName VARCHAR(MAX)', @AssModName
SELECT DISTINCT F1
FROM @tempTable;
```
这里首先将拆分后的结果插入到临时表`@tempTable`中,然后对`F1`列应用`DISTINCT`操作去除重复项。
注意:这个方法依赖于`sp_executesql`或自定义的存储过程来执行动态SQL,因为它在2008版本中并不直接支持`STRING_SPLIT`。如果你能更新到SQL Server 2016及以上版本,使用`STRING_SPLIT`会更简单。
阅读全文