从 SQL 服务器中的 nvarchar 数据类型获取唯一值

Get unique values from nvarchar datatype in SQL Server

我在 SQL 服务器数据库中有一个 table,它有一个类型为 nvarchar 的字段。它以如下所示的格式存储值:

   ROW 1 - ["value1", "value2", "value3"]
   ROW 2 - ["value4","value5"]
   ROW 3 - ["value2", "value1"]
   ROW 4 - ["value3", "value6", "value7"]

我需要从这里获取 select 所有唯一值。所以我需要在结果中得到以下值。

Result
------
value1
value2
value3
value4
value5
value6
value7

我尝试使用 DISTINCT 查询,但失败了。我是 SQL 服务器的新手,如果有人能在这里帮助我,那将非常有帮助。谢谢

这些值是有效的 JSON 数组,因此您应该能够使用 OPENJSON 来提取值:

SELECT value
FROM MyTable
CROSS APPLY OPENJSON(MyCol);

示例:

DECLARE @MyTable TABLE (MyCol NVARCHAR(MAX));
INSERT @MyTable (MyCol)
VALUES(N'["value1", "value2", "value3"]'),
      (N'["value4","value5"]'),
      (N'["value2", "value1"]'),
      (N'["value3", "value6", "value7"]');

SELECT value
FROM @MyTable
CROSS APPLY OPENJSON(MyCol);