【发布时间】:2023-01-08 20:30:10
【问题描述】:
有一个表,我需要根据条件更新第 3 列中的数据。如果有括号,那么您需要从那里获取信息,如果没有,则第一列中的内容。把它放在第 3 列没有信息的地方。在大多数情况下,有必要将 where status down 或 error
这是我的要求:
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');
错误:无效的正则表达式:括号 () 不平衡
怎么了?或者可以做不同的事情吗?
【问题讨论】:
-
你能解释一下
WHEN name_1 LIKE '%(%' THEN SUBSTRING(name_1 FROM '%(%' FOR ')')应该做什么吗? -
检查 () 中的值是否存在,然后将其写入第 3 列,如果不存在 (),则写入所有 @Jens
-
not equals在sql中是<>不是!= -
from 和 for 之后必须是数字,不能是字符串
-
@Jens:你是对的,但是
!=也被 Postgres 接受了
标签: postgresql