我是PostgreSQL的新手,如果特定列以某种模式开头,我希望能够从表中删除行。
例如,
我有一个reference
列,这是一种时间戳(YYMMDDHHMM)。如果参考栏以16 ********开头,那么我希望将其删除。
到目前为止,我知道如果知道整个引用,如何删除列。 E.g:
DELETE FROM my_tbl WHERE name='test1' AND ref_no=1601010000;
但是,我需要更改它,以便条件仅指定参考编号的前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