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

Mengganti nama kunci hstore di PostgreSQL 9.2

Saya rasa Anda benar bahwa Anda harus menarik pasangan lama dan memasang kembali pasangan baru (dengan kunci yang telah diganti namanya).

Anda bisa melakukannya dengan satu kalimat:

(h - from_key) || hstore(to_key, h -> from_key)

dimana h adalah hstore, from_key adalah kunci yang ingin Anda ubah dan to_key adalah apa yang Anda ingin mengubahnya. Itu akan mengembalikan hstore baru dengan perubahan yang diinginkan tetapi mengasumsikan bahwa from_key ada di h; jika from_key tidak ada di h maka Anda akan berakhir dengan to_key -> NULL di hstore Anda. Jika Anda, seperti semua orang waras, tidak ingin NULL yang tersesat maka saya akan membungkus logika dalam fungsi sederhana untuk membuatnya lebih mudah untuk menambahkan pemeriksaan keberadaan; seperti ini:

create or replace function
change_hstore_key(h hstore, from_key text, to_key text) returns hstore as $$
begin
    if h ? from_key then
        return (h - from_key) || hstore(to_key, h -> from_key);
    end if;
    return h;
end
$$ language plpgsql;

Kemudian Anda dapat mengatakan keduanya dan mendapatkan hasil yang diharapkan:

=> select change_hstore_key('a=>1,b=>2,c=>3'::hstore, 'b', 'pancakes');
      change_hstore_key       
------------------------------
 "pancakes"=>"2", "a"=>"1", "c"=>"3"

=> select change_hstore_key('a=>1,b=>2,c=>3'::hstore, 'pancakes', 'X');
      change_hstore_key       
------------------------------
 "a"=>"1", "b"=>"2", "c"=>"3"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jalankan program eksternal dengan pemicu di postgres 9.4

  2. Postgresql regexp_replace

  3. Masukkan kamus kecil seperti {1:23, 2:45, 3:17} ke dalam kolom tabel database SQL di Postgres menggunakan bahasa python

  4. Pengumpulan aneh dengan postgresql

  5. Transaksi bersarang di postgresql 8.2?