我刚接触PostgreSQL,想学习如何从表中删除某些行,当一个特定的列以某种模式开始时。
例如,
我有一个reference
列,它是一种时间戳(YYMMDDHHMM)。如果参考列以16********开头,则我希望删除它。
到目前为止,我知道如何删除整个参考列。例如:
DELETE FROM my_tbl WHERE name='test1' AND ref_no=1601010000;
然而,我需要更改这个条件,使其仅指定参考号的前两位数字。
我刚接触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%'
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”的所有名字的列。
更多信息请参见:模式匹配