微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL charindex抛出Invalid length参数传递给LEFT或SUBSTRING函数因为期限?

我在查询的where子句中有下面的行,但是我不断得到这个错误
Msg 537,Level 16,State 3,Line 3
Invalid length parameter passed to the LEFT or SUBSTRING function.

    SUBSTRING(
        [email],1,CHARINDEX('@',[email])-1
    ) =
    SUBSTRING(
        [email],[email])+1,CHARINDEX('.',[email])
    )

错误源自CHARINDEX(‘.’,[email])

如果我将期间更改为一封信,我不会收到错误.每个记录都有一段时间,即使没有这个记录,charindex函数也会返回0,这不会导致这个错误.我一定很想念一些简单的东西.请帮忙!

编辑.

我尝试把它放在一个isnull,isnull(CHARINDEX(‘.’,[email]),1)为了防止它由于某些原因返回null,但也没有工作.

解决方法

错误源于
CHARINDEX('@',[email])-1

如果数据中没有@符号,则charindex返回0.您从中减去一个获取-1,这在子字符串函数中无效.

试试这个.

CHARINDEX('@',[email] + '@')-1

这将强制进行匹配,确保CharIndex始终返回值> = 1,这将导致您的子字符串功能成功.

原文地址:https://www.jb51.cc/mssql/75839.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐