SQL charindex抛出Invalid length参数传递给LEFT或SUBSTRING函数
发布时间:2020-12-12 08:37:37 所属栏目:MsSql教程 来源:网络整理
导读:我在查询的where子句中有下面的行,但是我不断得到这个错误: Msg 537,Level 16,State 3,Line 3Invalid length parameter passed to the LEFT or SUBSTRING function. SUBSTRING( [email],1,CHARINDEX('@',[email])-1 ) = SUBSTRING( [email],[email])+1,CHARI
我在查询的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,这将导致您的子字符串功能成功. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |