首页 > 解决方案 > 收到错误“传递给 LEFT 或 SUBSTRING 函数的长度参数无效”

问题描述

我在下面的查询中没有几个问题,当我取消注释并运行它返回的整个查询时的姓氏行错误:

传递给 LEFT 或 SUBSTRING 函数的长度参数无效

以及如何删除邮政编码中的连字符,下面是代码:

最后,当我添加姓氏行时,它给了我这个错误

传递给 LEFT 或 SUBSTRING 函数的长度参数无效

在下面,我想删除邮政编码中破折号后的任何内容,例如示例(99297-9925)——在这里我想删除“-9925”——只有很少的记录像这样存在:

标签: sqlsql-servertsqlssms

解决方案


我不确定代码是否正确,但解决此问题的最简单方法charindex()是将搜索到的字符附加到字符串的末尾:

FName = ('"' +
         LTRIM(RTRIM(Substring(HimRec_Main.NameFirst, 
                               Charindex(',', HimRec_Main.NameMiddle + ',') + 1, 

                              LEN(HimRec_Main.NameLast)
                              )
                    )
               ) +
         '"'
        ),
LName = ('"' +
         LTRIM(RTRIM(Substring(HimRec_Main.NameLast, 1,
                     Charindex(',', HimRec_Main.NameLast + ',') - 1)
                    )
              ) + 
         '"'
        ) ------- **need help in this one **

推荐阅读