gpt4 book ai didi

sql-server - 收到错误 “Invalid length parameter passed to the LEFT or SUBSTRING function.”

转载 作者:行者123 更新时间:2023-12-03 08:04:43 26 4
gpt4 key购买 nike

我正在尝试从我们的SQL日志文件中提取登录成功和失败的信息。这是我能够开始工作的声明,现在运行它时出现错误。任何帮助将不胜感激。我知道它在最后一条语句中,因为其余部分在独立运行时都可以正常工作。系统没有任何变化,所以我不明白为什么它会开始显示错误?

CREATE TABLE [dbo].[#TmpErrorLog]
([LogDate] DATETIME NULL,
[ProcessInfo] VARCHAR(20) NULL,
[Text] VARCHAR(MAX) NULL);

CREATE TABLE [dbo].[#TmpErrorLog2]
([LogDate] DATETIME NULL,
[ProcessInfo] VARCHAR(20) NULL,
[Text] VARCHAR(MAX) NULL,
[LoginAttempt] VARCHAR(20) NULL);


INSERT INTO #TmpErrorLog ([LogDate], [ProcessInfo], [Text])
EXEC [master].[dbo].[xp_readerrorlog] 0 ;

INSERT INTO #TmpErrorLog2 ([LogDate], [ProcessInfo], [Text], [LoginAttempt])
Select LogDate, ProcessInfo, Replace(Text,'''','"') as Text, SUBSTRING(Text,0,16) as LoginAttempt
From #TmpErrorLog
Where LogDate > GETDATE() - 1 and Text like '%\%'

INSERT INTO LogData ([LogDate], [LoginAttempt], [LoginUser])
Select
LogDate,
Case LoginAttempt When 'Login succeeded' Then 'Successfull' Else 'Failed' End as LoginAttempt,
SUBSTRING(SUBSTRING(Text, CHARINDEX('"', Text,1), CHARINDEX('"', Text, CHARINDEX('"', Text, 0)) - 4),2,50) as LoginUser
From #TmpErrorLog2
Where LogDate Not In(Select LogDate From LogData)

Drop Table #TmpErrorLog
Drop Table #TmpErrorLog2

最佳答案

IIRC,CHARINDEX可以返回-1,这不是SUBSTRING的有效参数。我猜想您的CHARINDEX上有未点击的商品。

关于sql-server - 收到错误 “Invalid length parameter passed to the LEFT or SUBSTRING function.”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553309/

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