Tôi có cột TEXT
chứa chuỗi JSON hợp lệ.PostgreSQL 9.2 - Chuyển đổi chuỗi JON TEXT thành kiểu json/hstore
CREATE TABLE users(settings TEXT);
INSERT INTO users VALUES ('{"language":"en","gender":"male"}');
INSERT INTO users VALUES ('{"language":"fr","gender":"female"}');
INSERT INTO users VALUES ('{"language":"es","gender":"female"}');
INSERT INTO users VALUES ('{"language":"en","gender":"male"}');
Tôi muốn chuyển đổi một số trường thành định dạng có thể truy vấn.
A REGEXP_REPLACE
cho mỗi trường sẽ làm (language
trường và gender
trường). Nhưng kể từ đó là hợp lệ JSON, là có cách để:
- Chuyển đổi thành kiểu JSON
- Chuyển đổi thành loại hstore
- Hoặc cách nào khả thi khác
SQLFiddle: http://sqlfiddle.com/#!12/54823
chức năng yêu cầu là một trong những tính năng thú vị từ 9.3. Tôi đọc một số bài viết được mô tả bằng cách sử dụng pl/js8 cho mục đích này http://www.postgresonline.com/journal/archives/263-PLV8JS-and-PLCoffee-Part-2-JSON-search-requests.html –
Cảm ơn. Tôi cũng phát hiện ra rằng tôi có thể làm điều đầu tiên bằng cách chỉ cần đưa nó vào JSON: 'settings :: json'. Nhưng nó không phải là truy vấn có thể mặc dù. Giải quyết với regexp. – huy
FYI có một backport của 9.3 cải tiến chức năng JSON cho PostgreSQL 9.2 http://adpgtech.blogspot.co.nz/2013/04/backport-of-93-json-enhancements.html –