如何使用PostgreSQL hstore中的通配符查询值
发布时间:2020-12-13 16:26:29 所属栏目:百科 来源:网络整理
导读:我试图向hstore查询符合搜索条件的某个键的所有值. 我可以得到这样一个特定键的所有值: SELECT DISTINCTsvals(slice(data,ARRAY['Supplier']))FROM "products" 我也可以得到一个具体的价值: SELECT DISTINCTsvals(slice(data,ARRAY['Supplier'])) AS supFR
我试图向hstore查询符合搜索条件的某个键的所有值.
我可以得到这样一个特定键的所有值: SELECT DISTINCT svals(slice(data,ARRAY['Supplier'])) FROM "products" 我也可以得到一个具体的价值: SELECT DISTINCT svals(slice(data,ARRAY['Supplier'])) AS sup FROM "products" WHERE data @> 'Supplier => Toshiba' 我真正喜欢的是(这不工作): SELECT DISTINCT svals(slice(data,ARRAY['Supplier'])) AS sup FROM "products" WHERE data @> 'Supplier => %tosh%' 要么: SELECT DISTINCT svals(slice(data,ARRAY['Supplier'])) AS sup FROM "products" WHERE lower(sup) LIKE '%tosh%' 用于区分大小写的搜索.这怎么做?
您可以使用
-> operator从hstore列中的键提取值.
SELECT data->'Supplier' AS sup FROM products WHERE lower(data->'Supplier') LIKE '%tosh%'; 另外,像PostgreSQL中的大多数表达式一样(除了random()之外),您可以为此值设置索引: CREATE INDEX products_supplier_key ON products ((data->'Supplier')); CREATE INDEX products_supplier_lowercase_key ON products ((lower(data->'Supplier'))); 这将允许PostgreSQL使用索引来回答许多这样的查询,而不是读取每一行并扫描hstore列.有关LIKE的索引使用情况,请参阅Index Types上的注释. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |