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

6

我刚接触PostgreSQL,想学习如何从表中删除某些行,当一个特定的列以某种模式开始时。

例如,

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

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

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

然而,我需要更改这个条件,使其仅指定参考号的前两位数字。

2个回答

10

了解 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%' 

2

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

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

“%”字符是通配符。上面的语句应该删除包含字符串“test”的所有名字的列。

更多信息请参见:模式匹配


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接