A A*_*A A 3 sql postgresql jpa
我有一个类似的查询
SELECT DISTINCT (value->'Tag') AS tagname
FROM documents,
jsonb_array_elements(documents.Tags)
Run Code Online (Sandbox Code Playgroud)
所以标记名是一个 jsonb 值。我需要将该标记名转换为 varchar。我怎么做那个演员?
文档表中标签列中的样本数据是
'[{"Tag":"Web 2.0"},{"Tag":"Adobe Creative"},{"Tag":"Suite"}]'
Run Code Online (Sandbox Code Playgroud)
我正在研究 java jpa。我尝试了本机查询
Query query = this.em.createNativeQuery(
"select distinct (value->'Tag')::varchar as tags from documents, jsonb_array_elements(documents.Tags)");
Run Code Online (Sandbox Code Playgroud)
但它的显示
Not all named parameters have been set:
Run Code Online (Sandbox Code Playgroud)
不需要强制转换,只需使用返回值的->>运算符text
SELECT DISTINCT value ->> 'Tag' AS tagname
FROM documents,
jsonb_array_elements(documents.tags);
Run Code Online (Sandbox Code Playgroud)
因为有一天你可能需要一个不同的演员:
::不是投射值的唯一方法(这就是 JPA 所窒息的)。您还可以使用标准cast()运算符:
SELECT DISTINCT cast(value -> 'Tag' as varchar) AS tagname
Run Code Online (Sandbox Code Playgroud)
但这里的->>运营商是更好的选择。