仅当参数等于特定值时如何更新列?

How to update columns only if argument is equal to specific value?

我的查询应该仅在参数等于 1 时才更新列。示例如下:

<cfquery name="updateQry" datasource="test">
    UPDATE Table1
    SET fname = form.fname,
        lname = form.lname,
        <cfif form.status eq 1>
            title = form.title,
        </cfif>
        last_update_dt = getDate()
    WHERE rec_id = form.record_id
 </cfquery>

我想将此 SQL 查询移动到存储过程。如何仅使用 SQL 代码实现相同的过程?而不是 <cfif form.status eq 1> title = @title,</cfif> 如何用 SQL 代码替换?我用的是Sybase数据库和ColdFusion 2016,上面这段代码应该移到存储过程中。

我想你想要一个 case 表达式,像这样:

UPDATE Table1
SET fname = form.fname,
    lname = form.lname,
    title = (case when form.status = 1 then form.title else table1.title end),
    last_update_dt = getDate()
WHERE rec_id = form.record_id;

在存储过程中,您可能会使用参数:

UPDATE Table1
SET fname = @fname,
    lname = @lname,
    title = (case when @status = 1 then @title else table1.title end),
    last_update_dt = getDate()
WHERE rec_id = #record_id;