PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

postgresql:enum dan karakter bervariasi, memperbarui

Masalah dengan upaya sederhana adalah Anda memiliki pemeran yang memanggil para pemeran, memanggil para pemeran, memanggil para pemeran...

Anda perlu entah bagaimana menjauh dari varchar->enum di gips Anda. Cara paling sederhana (paling bisa dimengerti) adalah dengan mengonversi secara manual. Perhatikan bahwa literal string yang dilemparkan dalam pernyataan kasus bukanlah teks, melainkan tipe kutipan-tidak diketahui yang menghindari rekursi tak terbatas.

BEGIN;

CREATE TYPE t_tl AS ENUM ('red', 'amber', 'green');

CREATE FUNCTION dummy_cast(varchar) RETURNS t_tl AS $$
    SELECT CASE $1
        WHEN 'red' THEN 'red'::t_tl
        WHEN 'amber' THEN 'amber'::t_tl
        WHEN 'green' THEN 'green'::t_tl
    END;
$$ LANGUAGE SQL;

CREATE CAST (varchar AS t_tl) WITH FUNCTION dummy_cast(varchar) AS ASSIGNMENT;

CREATE TABLE t (x t_tl);

INSERT INTO t VALUES ('red');
INSERT INTO t VALUES ('green'::varchar);

SELECT * FROM t;

ROLLBACK;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ScalikeJDBC:Kumpulan koneksi belum diinisialisasi. (nama:'default)

  2. org.postgresql.util.PSQLException:ERROR:tidak dapat membuat serial akses karena dependensi baca/tulis di antara transaksi

  3. Ekstrak hari kerja, milidetik, mikrodetik, nanodetik dari tanggal di Postgres

  4. Menghubungkan ke PostgreSQL di IRI Workbench

  5. Karakter dengan urutan byte 0x9d dalam penyandian 'WIN1252' tidak memiliki padanan dalam penyandian 'UTF8'