当我尝试在case语句中使用DEFAULT关键字的值更新表时,出现了语法错误,如下所示:
UPDATE tbl
SET status =
CASE
WHEN ( st.status = '' ) THEN ( DEFAULT )
ELSE ( ROUND( CAST(st.status as numeric) ) )
END
FROM sourceTable st
以下是错误信息:
ERROR: syntax error at or near "DEFAULT"
LINE 4: ... WHEN ( tc.status = '''' ) THEN ( DEFAULT )
我已经看了一段时间的文档,但我无法看出它违反了任何语句构造规则。
之前的代码使用NULL确实可行。
UPDATE tbl
SET status =
CASE
WHEN ( st.status = '' ) THEN ( NULL )
ELSE ( ROUND( CAST(st.status as numeric) ) )
END
FROM sourceTable st
我的目标是将列更新为默认值,或者如果源表列中存在空字符串,则更新为NULL。
使用NULL可以正常工作,但当然会将列更新为NULL。我认为更改为DEFAULT会起作用 - 有人可以帮忙进行语法修正或提供替代方案吗?
这段代码是由某个处理不同情况下各种列的东西生成的,因此不寻求任何其他解决问题的替代方法(尽管我对任何回应都持开放态度) - 只是在寻找解决方法,或者解释为什么语法无法正常工作。谢谢!
THEN ( default )
中指定即可。 - Raulstatus
有一个DEFAULT
值,那么它怎么会得到一个空值呢?代码中其他地方似乎有些奇怪。 - Gordon Linoff