sql - 如何筛选结果以查找特定的字符串值

标签 sql string postgresql

我正在搜索字符串中的特定值,该字符串中的每个值都指定一个看起来像这样的子句

K1,K2,K3,K114,K22,K110,...

标准结果

enter image description here

假设我想搜索拥有 K1 的人 当我在 where 部分使用以下过滤器时

where q2.klause like '%K1%' 

它会让所有拥有 k1 的人得到我,但是如果有人拥有 K11 而没有 K1,它也会添加它,这不是我想要的!

所以我尝试了这种方法

where q2.klause like '%K1' 

enter image description here

可悲的是,它也不起作用,因为它只会让只有 K1 的人,没有条款不共享。

我想要任何拥有 K1 的人,无论他们有/没有其他 klauses !

UIDs    Klause
6548    K1,K35,K37,K4
48      K1,K34
486     K1,K14
8974    K1
456568  K11,K12,K2
8814    K2,K14,K34
6248    K14,K2
2236    K1,K35,K37,K4
547     K2
397812  K2
586     K2,K11
1358    K1,K13,K14
5856    K1,K14
9872    K1,K14
64789   K1,K14
22344   K1,K14,K35,K37
4788    K1,K14
4587    K1,K14,K35,K37
14561   K11,K12,K14,K2
232156  K1,K14
156     K1,K114
475     K11,K12,K14,K2
45645   K13,K14
456454  K13,K14

在这种情况下,有 14 个人拥有 K1。这是需要的最终答案!请注意,这也应该与其他克劳斯一起完成。

最佳答案

使用正则表达式:

WHERE q2.klause ~ '\mk1\M'

\m 匹配单词的开头,\M 匹配单词的结尾。

关于sql - 如何筛选结果以查找特定的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676313/

相关文章:

sql - 未传入某些参数时如何进行SQL查询过滤?

java - 如何修复 Java ArrayList 中循环中仅重复的最后一个对象

javascript - 将字符串拆分为定义长度的部分

android - 在 C 中通过 strtok 实现拆分字符串 - 段错误(核心转储)

python - 如何防止 psycopg2 锁定表

ruby - 为什么 Ruby 续集和 Postgres psql 的时区信息不同?

django - "Django documentation"表示 "ensure that Django has permission to create and alter tables"那么我如何在 postgreSQL 中执行此操作?

mysql - 在其包含的学生点的表中查找学生的排名

c - 通过一次删除一个字符来均衡字符串中的字符数

sql - PostgreSQL : Building a nested json structure on a single table?