如果列以特定模式开头,则删除 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
我是 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