CASE 语句 Postgres
CASE Statement Postgres
我正在尝试通过 REST API 修补一个对象。我的查询有问题...
// query
var query = "UPDATE users SET \
first_name = CASE WHEN != '' THEN first_name = ELSE first_name = first_name END, \
last_name = CASE WHEN != '' THEN last_name = ELSE last_name = last_name END, \
date_updated = now()\
WHERE username = "
// params
var params = [
request.params.user_id,
request.body.first_name || '',
request.body.last_name || ''
];
// query runs
sharedPgClient.query(query,params,function(err, res){
callback(err, res);
});
我得到的结果是成功的,但是除我没有设置的用户名外,每一列都设置为 "false"。我没有将任何东西设置为真/假。我尝试过不同的价值观等,但我迷路了。请帮忙
您正在做的是在一种情况下使用 first_name =
表达式的结果,在另一种情况下使用 first_name = first_name
的结果。两者都是布尔值。
你想写的大概是:
... SET first_name = CASE WHEN <> '' THEN ELSE first_name END ...
同上last_name
。
when
和 else
子句取值,而不是 SQL 片段。例如,first_name =
是一个布尔表达式,它的计算结果可能是 true
或 false
,具体取决于 first_name
的值。相反,您只需要使用您尝试设置的值:
var query = "UPDATE users SET \
first_name = CASE WHEN != '' THEN ELSE first_name END, \
// Here -----------------------------^
last_name = CASE WHEN != '' THEN ELSE last_name END, \
// And here ------------------------^
date_updated = now()\
WHERE username = "
我正在尝试通过 REST API 修补一个对象。我的查询有问题...
// query
var query = "UPDATE users SET \
first_name = CASE WHEN != '' THEN first_name = ELSE first_name = first_name END, \
last_name = CASE WHEN != '' THEN last_name = ELSE last_name = last_name END, \
date_updated = now()\
WHERE username = "
// params
var params = [
request.params.user_id,
request.body.first_name || '',
request.body.last_name || ''
];
// query runs
sharedPgClient.query(query,params,function(err, res){
callback(err, res);
});
我得到的结果是成功的,但是除我没有设置的用户名外,每一列都设置为 "false"。我没有将任何东西设置为真/假。我尝试过不同的价值观等,但我迷路了。请帮忙
您正在做的是在一种情况下使用 first_name =
表达式的结果,在另一种情况下使用 first_name = first_name
的结果。两者都是布尔值。
你想写的大概是:
... SET first_name = CASE WHEN <> '' THEN ELSE first_name END ...
同上last_name
。
when
和 else
子句取值,而不是 SQL 片段。例如,first_name =
是一个布尔表达式,它的计算结果可能是 true
或 false
,具体取决于 first_name
的值。相反,您只需要使用您尝试设置的值:
var query = "UPDATE users SET \
first_name = CASE WHEN != '' THEN ELSE first_name END, \
// Here -----------------------------^
last_name = CASE WHEN != '' THEN ELSE last_name END, \
// And here ------------------------^
date_updated = now()\
WHERE username = "