PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đổi tên khóa hstore trong PostgreSQL 9.2

Tôi nghĩ rằng bạn đúng khi bạn phải kéo cặp cũ ra và đặt lại cặp mới (với khóa đã được đổi tên) vào lại.

Bạn có thể làm điều đó với một lớp lót:

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

ở đâu h là hstore, from_key là khóa bạn muốn thay đổi và to_key là những gì bạn muốn thay đổi nó thành. Điều đó sẽ trả về một hstore mới với thay đổi mong muốn nhưng nó giả định rằng from_keyh; if from_key không có trong h thì bạn sẽ kết thúc bằng to_key -> NULL trong cửa hàng của bạn. Nếu bạn, giống như tất cả những người lành mạnh, không muốn NULL đi lạc thì tôi sẽ gói logic trong một hàm đơn giản để dễ dàng thêm kiểm tra sự tồn tại; một cái gì đó như thế này:

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;

Sau đó, bạn có thể nói cả hai điều này và nhận được kết quả mong đợi:

=> 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. Làm thế nào để PostgreSQL cache các câu lệnh và dữ liệu?

  2. Có những thứ như một hàm tạm thời?

  3. Gọi đến hàm không xác định pg_connect () - Wamp

  4. Django + PostgreSQL:tạo cơ sở dữ liệu (cấp đặc quyền gì)

  5. Giải thích lệnh PostgreSQL VALUES