2016-06-13 2 views
0

Я новичок в PostgreSQL и хочу иметь возможность удалять строки из таблицы, если конкретный столбец начинается с определенного шаблона.Удаление строк в PostgreSQL, если столбец начинается с определенного шаблона

Например,

У меня есть reference столбца, который является своим родом отметка времени (YYMMDDHHMM). Если ссылочный столбец начинается с 16 ********, то я бы хотел его удалить.

До сих пор я знаю, как удалить столбец, если известна вся ссылка. Например:

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

Однако, мне нужно, чтобы изменить это, так что условие определяет только первые 2 цифры контрольного числа.

ответ

1

Читайте о 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%' 
1

Попробуйте сделать «как» оператор, это позволяет вам нужно подобрать шаблон.

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

Символ '%' является подстановочным знаком. Вышеупомянутая строка должна удалять каждый столбец, где имя содержит строку «test».

Дополнительная информация здесь: pattern matching

Смежные вопросы