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