首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL选择ids (如唯一标记)

SQL选择ids (如唯一标记)
EN

Stack Overflow用户
提问于 2018-03-01 18:19:52
回答 1查看 68关注 0票数 0

表中的每个id都有一个标签列,其中的文本是逗号分隔的字符串,例如生物学、生命科学、有机体、生物技术。

我正在使用这个查询来选择所有的I,这些I都类似于标签“碳”。

代码语言:javascript
复制
SELECT f.id 
FROM   ttrss_user_entries e 
INNER JOIN ttrss_entries f 
ON f.id = e.ref_id 
WHERE e.tags_new LIKE '%carbon%'

问题是,因为也有像“二氧化碳”这样的标签,所以有重复的ids。

是否有方法选择只匹配单引号之间的文本的Is?

以上查询返回

代码语言:javascript
复制
3362   │ Polycyclic aromatic hydrocarbon,Nature
69984  │ Low-carbon economy,Renewable Energy
444573 │ Fluorocarbon,Magnesium
5637   │ Carbon,Fossil

但我希望它能回来

代码语言:javascript
复制
5637 │ Carbon,Fossil
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 19:12:34

修正你的数据结构!不要将标记存储在分隔字符串中。Postgres中的一个选项是作为数组。另一个表是一个单独的表,每个条目和标记都有一行(传统方法)。

下面是数组解决方案的外观:

代码语言:javascript
复制
WHERE 'carbon' = any (regexp_split_to_array(e.tags_new, ','::text)

我建议您更改数据格式,以便列是一个数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49056233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档