This documentation is for the unreleased development version of jOOQ. Click on the above version links to get this documentation for a supported version of jOOQ.
ARRAY_REPLACE
Supported by ✅ Open Source Edition ✅ Express Edition ✅ Professional Edition ✅ Enterprise Edition
The ARRAY_REPLACE function allows for replacing all occurrences of an element by another value in an array:
SELECT array_replace(ARRAY[1, 2, 2, 3], 2, -1)
create.select(arrayReplace(array(1, 2, 2, 3), val(2), val(-1))).fetch();
The result would look like this:
+----------------+ | array_replace | +----------------+ | [1, -1, -1, 3] | +----------------+
Dialect support
This example using jOOQ:
arrayReplace(array(1, 2, 2, 3), val(2), val(-1))
Translates to the following dialect specific expressions:
Aurora Postgres, CockroachDB, Postgres, YugabyteDB
array_replace( ARRAY[1, 2, 2, 3], 2, -1 )
BigQuery
(
SELECT coalesce(
array_agg(
CASE
WHEN e IS NOT DISTINCT FROM 2 THEN -1
ELSE e
END
),
CAST(ARRAY[] AS array<int64>)
)
FROM (
SELECT null e
FROM UNNEST([STRUCT(1 AS dual)]) AS dual
WHERE FALSE
UNION ALL
SELECT *
FROM UNNEST(ARRAY[1, 2, 2, 3]) t
) t
)
Databricks
array_replace( ARRAY(1, 2, 2, 3), 2, -1 )
DuckDB
array_transform(
ARRAY[1, 2, 2, 3],
e -> CASE
WHEN e IS NOT DISTINCT FROM 2 THEN -1
ELSE e
END
)
H2, HSQLDB
(
SELECT coalesce(
array_agg(
CASE
WHEN e IS NOT DISTINCT FROM 2 THEN -1
ELSE e
END
),
CAST(ARRAY[] AS int array)
)
FROM UNNEST(ARRAY[1, 2, 2, 3]) t (e)
)
Trino
transform(
ARRAY[1, 2, 2, 3],
e -> CASE
WHEN e IS NOT DISTINCT FROM 2 THEN -1
ELSE e
END
)
ASE, Access, Aurora MySQL, ClickHouse, DB2, Exasol, Firebird, Hana, Informix, MariaDB, MemSQL, MySQL, Oracle, Redshift, SQLDataWarehouse, SQLServer, SQLite, Snowflake, Spanner, Sybase, Teradata, Vertica
/* UNSUPPORTED */
Generated with jOOQ 3.21. Support in older jOOQ versions may differ. Translate your own SQL on our website
Feedback
Do you have any feedback about this page? We'd love to hear it!