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

问题描述:

我在PostgreSQL中非常新,希望能够从表中删除行,如果特定列以特定模式启动。如果列以特定模式开头,则删除PostgreSQL中的行

例如,

我有一个reference柱,其是一种时间标记(YYMMDDHHMM)的。如果引用列以16 ********开头,那么我希望它被删除。

到目前为止,我知道如何删除列,如果整个参考是已知的。例如:

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

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

阅读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,您需要先CONVER(投)它以这种方式varchar数据类型:

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

尝试“喜欢”操作,它允许你做模式匹配。

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

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

更多的信息在这里:pattern matching