如果列以特定模式开头,则删除 PostgreSQL 中的行

Deleting rows in PostgreSQL if column begins with a specific pattern

我是 PostgreSQL 的新手,如果特定列以特定模式开头,我希望能够从 table 中删除行。

例如,

我有一个 reference 列,它是一种时间戳 (YYMMDDHHMM)。如果引用栏以16********开头,那么我想删除它。

到目前为止,我知道如果整个引用已知,如何删除该列。例如:

DELETE FROM my_tbl WHERE name='test1' AND ref_no=1601010000;

但是,我需要更改此设置,以便条件仅指定参考编号的前 2 位数字。

了解 LIKE 运算符:https://www.postgresql.org/docs/8.3/static/functions-matching.html

使用此命令删除行:

DELETE FROM my_tbl WHERE reference LIKE '16%' 

在从 table 中删除行之前,首先检查删除条件是否确实按预期在常规 SELECT 语句中使用:

SELECT * FROM my_tbl WHERE reference LIKE '16%'

如果 reference 列不是 varchar 类型,而是 int 类型,您需要先将其转换(转换)为 varchar 数据类型:

SELECT * FROM my_tbl WHERE reference::varchar LIKE '16%'
DELETE FROM my_tbl WHERE reference::varchar LIKE '16%' 

尝试使用 'like' 运算符,它允许您进行模式匹配。

DELETE FROM my_tbl WHERE name like '%test%';

“%”字符是通配符。上面的行应该删除名称包含字符串 'test'.

的每一列

更多信息在这里:pattern matching