我正在编写一个函数来拆分逗号分隔的列,并在单个列中列出值并对它们进行计数。
样本数据
CREATE TABLE stri
(name varchar(100))
INSERT INTO stri
VALUES ('a1, a2, a9, a8')
我将使用它来拆分值,但是我需要将它们放在一个列中。我在考虑旋转,并使其复杂化,因为我希望结果按升序排序。
SELECT
REVERSE(PARSENAME(REPLACE(REVERSE(name), ',', '.'), 1)) AS name1
, REVERSE(PARSENAME(REPLACE(REVERSE(name), ',', '.'), 2)) AS name2
, REVERSE(PARSENAME(REPLACE(REVERSE(name), ',', '.'), 3)) AS name3
,REVERSE(PARSENAME(REPLACE(REVERSE(name), ',', '.'), 4)) AS name4
FROM dbo.stri;
GO
将显示上述查询
name1 name2 name3 name4
a1 a2 a9 a8
我预期的结果是:
name
a1
a2
a8
a9
4 -- count
敬请指点。
1条答案
按热度按时间vx6bjr1n1#
如果您使用的是sql server 2016或更高版本,则可以使用
string_split
如下所示:您可以在上面的查询中使用cte统计记录。
如果您使用的是sql server 2014,则可以使用
XML
方法如下:db<>小提琴演示
请在此查看更多详细信息。