传递给 RIGHT 函数消息的长度参数无效



我有一个问题。我正在一个 8700 万行的文件上运行名称解析脚本。它设置为解析NAME列,其中包含 SMITH、STEVE S 等数据。

当我运行以下命令将名称分解为列名字、中间名和姓氏时,这适用于除这个顽固表之外的所有其他表,我收到此错误:

传递给 RIGHT 函数的长度参数无效

不太清楚为什么。请任何帮助会很棒。

UPDATE table6
    SET lastName = LEFT(Name, CHARINDEX(', ', Name) - 1), 
        firstname = SUBSTRING(Name, CHARINDEX(', ', Name) + 2, CASE WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) + 1 ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) END - CHARINDEX(', ', Name) - 2),
        middlename = RIGHT(Name, LEN(Name) - CASE WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) END) 

您可能需要验证名称是否符合此语法。 一种方法是使用like

UPDATE table6
    SET lastName = LEFT(Name, CHARINDEX(', ', Name) - 1), 
        firstname = SUBSTRING(Name, CHARINDEX(', ', Name) + 2, CASE WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) + 1 ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) END - CHARINDEX(', ', Name) - 2),
        middlename = RIGHT(Name, LEN(Name) - CASE WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) END) 
    WHERE Name LIKE '% % %';

相关内容

最新更新