PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz niezmienny klon concat_ws

Pierwszy , funkcja wymaga dwóch parametry w definicji, jak już zasugerował Richard, i odpowiednio zaktualizowałeś swoje pytanie.

Drugi , możesz utworzyć tę funkcję za pomocą "any" wprowadź za pomocą LANGUAGE internal . Nie oznacza to jednak, że powinieneś.

concat_ws() jest tylko STABLE z powodu. Między innymi tekstowa reprezentacja date lub timestamp zależy od ustawień regionalnych / stylu daty, więc wynik nie jest niezmienny . Indeksy oparte na tym mogą po cichu pękać. Ograniczone do text wejście, można je bezpiecznie zadeklarować IMMUTABLE .Ponieważ potrzebujesz tylko text wejście (lub varchar , który ma niejawne rzutowanie na text ), ogranicz go do swojego przypadku użycia i bądź bezpieczny:

CREATE OR REPLACE FUNCTION immutable_concat_ws(text, VARIADIC text[])
RETURNS text AS 'text_concat_ws' LANGUAGE internal IMMUTABLE PARALLEL SAFE;

Oznacz go jako PARALLEL SAFE aby nie zepsuć równoległości podczas korzystania z tej funkcji. Podręcznik:

Oprzyj się pokusie robienia rzeczy takich jak ta immutable_concat_ws('|', now()::text, 'foo') . Spowoduje to ponowne wprowadzenie wspomnianych zależności w wywołaniu.

Powiązane:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. python manage.py migrate nie wprowadza żadnych zmian w bazie danych postgres

  2. Jaki jest odpowiednik PostgreSQL z SQL Server NVARCHAR?

  3. Usuń alias w zapytaniach generowanych przez Slick

  4. Co to jest LEFT JOIN w PostgreSQL

  5. Zaktualizuj zamówienie zwrotu przez w postgresql