2017-10-16 109 views
3

我有這樣的Postgres表:對PostgreSQL的HSQL

CREATE TABLE News (
    tags  text[](10), 
    contract varchar(40), 
    ...others 
); 

我需要得到所有不同的標籤給定的合同。我發現PostgreSQL的請求,效果很好:

SELECT array_agg(acc) 
FROM (
     SELECT DISTINCT unnest(tags::text[]) 
     FROM my_schema.news 
     WHERE contract = 'acontract' 
    ) AS dt(acc); 

由於我使用的彈簧數據的JPA,我嘗試這個請求轉換爲HSQL的要求,但我不能使它發揮作用。有關轉換可能是什麼的想法?

+1

在HSQLDB,使用 「組數據庫的SQL語法PGS真」(或等效的URL屬性sql.syntax_pgs = TRUE),以確保PostgreSQL的非標準功能。對SERIAL,BIGSERIAL,TEXT和UUID數據類型以及序列函數的引用被轉換爲HyperSQL等價物。請注意,HSQLDB確實支持數組類型,但是PostgreSQL的數組實現不同於SQL標準。 – scottb

回答

1

除了SET DATABASE SQL SYNTAX PGS TRUE之外,還需要根據SQL標準引用數組。

CREATE TABLE News (tags text array[10], contract varchar(40)) 

然後

select array_agg(acc) from (
    select distinct acc from news, unnest(tags) un(acc) 
    WHERE contract = 'acontract' 
)