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

sym*_*246 6 database postgresql reference delete-row

我是 PostgreSQL 的新手,希望能够在特定列以某种模式开头的情况下从表中删除行。

例如,

我有一reference列是一种时间戳(YYMMDDHHMM)。如果参考列以 16******** 开头,那么我希望将其删除。

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

DELETE FROM my_tbl WHERE name='test1' AND ref_no=1601010000;
Run Code Online (Sandbox Code Playgroud)

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

kro*_*lko 10

阅读有关LIKE运算符的信息:https://www.postgresql.org/docs/8.3/static/functions-matching.html

使用此命令删除行:

DELETE FROM my_tbl WHERE reference LIKE '16%' 
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM my_tbl WHERE reference LIKE '16%'
Run Code Online (Sandbox Code Playgroud)

如果reference列不是类型varchar,但例如int,您需要首先以这种方式将其转换(转换)为 varchar 数据类型:

SELECT * FROM my_tbl WHERE reference::varchar LIKE '16%'
DELETE FROM my_tbl WHERE reference::varchar LIKE '16%' 
Run Code Online (Sandbox Code Playgroud)