有一个表,我需要根据条件更新第三列的数据。如果有括号,则需要从其中获取信息,如果没有,则需要从第一列中获取信息。把它放在第三栏没有信息的地方。在大多数情况下,有必要在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
怎么了?还是可以用不同的方式?
在FROM
和FOR
之后,您需要一个起始索引和长度,这是一个数字。
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');
演示