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

时间:2016-06-13 07:44:16

标签: database postgresql reference delete-row

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

例如,

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

到目前为止,我知道如果知道整个引用,如何删除列。 E.g:

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

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

2 个答案:

答案 0 :(得分:2)

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

使用此命令删除行:

DELETE FROM my_tbl WHERE reference LIKE '16%' 

在从表中删除行之前,首先在常规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%' 

答案 1 :(得分:1)

尝试'like'操作符,它允许你进行模式匹配。

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

'%'字符是通配符。上面的行应该删除名称中包含字符串'test'的每一列。

此处有更多信息:pattern matching