一个表有 CSV 数据,我想SELECT DISTINCT ID
在那个表上做一个,我应该如何进行?
+-----------+
| id |
+-----------+
| 111,1487 |
+-----------+
| 462 |
+-----------+
| 2492 |
+-----------+
| 3184 |
+-----------+
| 3181,3184 |
+-----------+
| 3181 |
+-----------+
| 440 |
+-----------+
| 1436 |
+-----------+
我有一个我经常使用的函数,它可以将 INT 的 varchar csv 字符串拆分成一个单列表,我使用如下:
SELECT number from INTLIST_TO_TBL('123,234,345,4566')
它运行良好,但在这种情况下我不能使用它,因为有很多行并且在某些情况下它会返回多行。
我是否应该尝试使用插入临时表的游标,然后通过查询该临时表继续下一步?
有人告诉我游标是性能不佳的同义词,这就是为什么我总是在走那条路之前先在这里询问。
您应该能够使用CROSS APPLY。
为了提供一个最小的完整可验证示例,我包含了一个“简单”的 SPLIT TVF,它旨在模拟您的 INTLIST_TO_TBL 函数。这仅用于演示目的,还有更有效的方法来拆分超出我的答案的字符串。
现在我们有了 Split TVF,让我们看一个如何合并它的例子。