我做错了什么?使用condition和LIKE postgres进行更新



有一个表,我需要根据条件更新第三列的数据。如果有括号,则需要从其中获取信息,如果没有,则需要从第一列中获取信息。把它放在第三栏没有信息的地方。在大多数情况下,有必要在status或error

的位置加上https://dbfiddle.uk/GgFft6cY

这是我的请求:


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');

错误:无效正则表达式:parentheses () not balanced

怎么了?还是可以用不同的方式?

FROMFOR之后,您需要一个起始索引和长度,这是一个数字。

UPDATE table_1
SET name_3 = 
CASE
WHEN name_3 <> '' THEN name_3
WHEN name_1 LIKE '%(%' THEN SUBSTRING(name_1 FROM POSITION ('(' in name_1)+1 FOR POSITION (')' in name_1) -POSITION ('(' in name_1)-1)
ELSE name_1
END
WHERE status IN ('down', 'error');

演示

最新更新