gpt4 book ai didi

SQL charindex 抛出无效的长度参数由于句点而传递给 LEFT 或 SUBSTRING 函数?

转载 作者:行者123 更新时间:2023-12-04 01:38:35 25 4
gpt4 key购买 nike

我在查询的 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],
CHARINDEX('@',[email])+1,
CHARINDEX('.', [email])
)

错误源自 CHARINDEX('.', [email])
如果我将句点更改为字母,则不会出现错误。每条记录都有一个句点,即使没有,charindex 函数也会返回 0,这不会导致抛出此错误。我一定错过了一些简单的东西。请帮忙!

编辑。

我试着把它扔进一个 isnull, isnull(CHARINDEX('.', [email]), 1)以防万一它由于某种原因返回 null,但这也不起作用。

最佳答案

错误源自

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

如果数据中没有@ 符号,charindex 返回0。从中减去1 得到-1,这在substring 函数中是无效的。

试试这个。
CHARINDEX('@',[email] + '@')-1

这会强制匹配,确保 CharIndex 始终返回一个 >= 1 的值,这将导致您的子字符串函数成功。

关于SQL charindex 抛出无效的长度参数由于句点而传递给 LEFT 或 SUBSTRING 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com