Как правильно написать условие для запроса Postgres UPDATE и Like
Есть таблица, и мне нужно обновить данные в 3-м столбце в соответствии с условием. Если есть скобки, то вам нужно взять оттуда информацию, а если нет, то что находится в первом столбце. Поместите его туда, где нет информации в 3-й колонке. В большинстве случаев необходимо указать, где статус down или error
Ответы (2 шт):
Автор решения: polak228
→ Ссылка
UPDATE table_1
SET name_3 =
CASE
WHEN name_3 != '' THEN name_3
WHEN name_1 LIKE '%(%' THEN SUBSTRING(name_1 FROM '%(%' FOR ')')
ELSE name_1
END
WHERE status IN ('down', 'error');
Этот код обновляет столбец name_3 следующим образом:
- Если столбец
name_3не пустой, то он остается неизменным. - Если столбец
name_1содержит скобки, то в столбецname_3помещается текст, содержащийся между скобками. - Если столбец
name_1не содержит скобок, то в столбецname_3помещается значение столбцаname_1.
Автор решения: Виктор
→ Ссылка
Вариант (если я всё правильно понял):
UPDATE table_1
SET name_3 =
case
when name_3 != '' THEN name_3
when substring(name_1, '\((.*?)\)') is not null then substring(name_1, '\((.*?)\)')
else name_1
end
where status in ('down','error');