PostgreSQL删除行,其中等于由逗号分隔的字符串
我是SQL的初学者,我希望通过执行查询来删除一些行 例如,我有一个表:PostgreSQL删除行,其中等于由逗号分隔的字符串,sql,string,postgresql,csv,sql-delete,Sql,String,Postgresql,Csv,Sql Delete,我是SQL的初学者,我希望通过执行查询来删除一些行 例如,我有一个表: ID │ Type │ ─────────────────────────┼───────────────────────────┼ 220 │ aaa │ 220 │ bbb
ID │ Type │
─────────────────────────┼───────────────────────────┼
220 │ aaa │
220 │ bbb │
220 │ ccc │
220 │ ddd │
220 │ eee │
220 │ fff │
我有一个用逗号分隔的字符串:
aaa、bbb、fff、ddd
我希望删除ID为220且类型等于字符串中某个值的所有行
我该怎么办呢
非常感谢一个选项将字符串拆分为一个数组,然后使用
any()
:
如果字符串的逗号后面确实包含空格,则可能需要
regexp\u split\u to\u数组(…,'\s*,\s*)
。如前所述,该数组中的第二个元素将是'bbb'
而不是'bbb'
@a\u horse\u和\u no\u名称:如果逗号后面始终跟一个空格,它会工作吗?有趣。似乎前导空间确实被移除了。但是尾随空格不是:@a_horse_,没有名字;是的,我想是因为在你的例子中空格是一致的。如果我们有('aaa,bbb,fff,ddd)
,那么我们可以使用,'
。我相信您正在寻找这个:,特别是字符串到数组。
delete
from mytable
where id = 220 and type = any(string_to_array('aaa, bbb, fff, ddd', ', ' ))