Postgres - 无法加入 UUID 上的 Json 数组值

Postgres - Cannot Join Json Array Values on UUID

所以我有一个 table Profession:

UUID UUID,
Name TEXT

其中 UUIDuuid1, uuid2, uuid3, etc.

然后另一个table Degrees:

 DegreeName TEXT,
 Record JSON

其中 Record->'Professions' json 记录可能包含 Profession.uuid 的列表,例如 {"Professions":"[uuid1,uuid2]"},尽管该字段可能是 NULL,例如 {"Professions":"[]"}.

以下是我试图加入两个 table 的方式:

SELECT prof.uuid, prof.Name, d.DegreeName

FROM Profession prof
LEFT JOIN (
        SELECT DegreeName, json_array_elements(Record->'Professions') prof_uuid
        FROM  Degrees
    ) d
ON d.prof_uuid::TEXT=prof.uuid::TEXT

当我这样做时,我只会得到空值。请注意,我转换为 TEXT 是因为我无法将 Professions 数组转换为 UUID 因为空白。

我已经尝试使用 Professions 列表中的值手动搜索 Profession table 并且有效:

SELECT *
FROM Profession
WHERE uuid = 'someprofuuid'

我缺少一些演员表吗?

我明白了。问题是我使用的是 json_array_elements 而不是 json_array_elements_text。当我切换它时,连接起作用了:

SELECT prof.uuid, prof.Name, d.DegreeName

FROM Profession prof
LEFT JOIN (
        SELECT DegreeName, json_array_elements_text(Record->'Professions') prof_uuid
        FROM Degrees
    ) d
ON d.prof_uuid::TEXT=prof.uuid::TEXT