我们有一个表格,其中有一个名为 fullname 的列,格式为“Lastname, Firstname”

我在表中添加了新列,以便我们可以将姓氏和名字分开,但我不知道如何去做。下面的代码是我使用的,但“listFirst 不是公认的内置函数名称。”

<cfquery name="splitname" datasource="dsn">
UPDATE dbo.employees
SET
  lastname = listFirst(fullname, ","),
  firstname = listRest(fullname, ", ")
</cfquery>

请指教。谢谢你。

最佳答案

一种简单的方法(这不是最好的方法。但它看起来是一次性的。所以应该没问题。)是选择行作为单独的查询并在循环中更新每一行。在将它们传递给查询之前,您还需要评估列表函数。还可以使用 <cfqueryparam> 使字符串安全地进行查询。

<cfquery name="splitname" datasource="dsn">
    SELECT empID, fullname
    FROM dbo.employees
</cfquery>

<cfloop query="splitname">
    <cfquery datasource="dsn">
        UPDATE dbo.employees
        SET
            lastname = <cfqueryparam value="#trim(listFirst(splitname.fullname, ","))#" cfsqltype="varchar">,
            firstname = <cfqueryparam value="#trim(listlast(splitname.fullname, ","))#" cfsqltype="varchar">
        WHERE empID = <cfqueryparam value="#splitname.empID#" cfsqltype="varchar">
    </cfquery>
</cfloop>

关于sql-server - 如何将 "Lastname, Firstname"数据拆分为单独的姓氏和名字列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53890237/

10-10 11:29