| 
	
 | 
 Posted by Gert-Jan Strik on 06/12/57 11:48 
db55, 
 
You probably have rows where there is a Comment (of at least 8 
characters) that has no ',' in it, as in the following example: 
 
SELECT LTRIM(SUBSTRING(Comments, 1, convert(bigint, CHARINDEX(',', 
Comments)-1))) 
FROM ( 
  SELECT 'this is just an example' AS Comments 
) AS "460zz_Relma_Comment_Parse" 
WHERE NOT(COMMENTS IS NULL) AND LEN(Comments) > 8 
-- AND Comments LIKE '%,%' 
 
Server: Msg 536, Level 16, State 3, Line 1 
Invalid length parameter passed to the substring function. 
 
HTH, 
Gert-Jan 
 
 
 
db55 wrote: 
>  
> This script doesn't work.  Why? 
>  
> UPDATE    [460zz_Relma_Comment_Parse] 
> SET              [Comments 1] = LTRIM(SUBSTRING([Comments], 1, 
> convert(bigint, CHARINDEX(',', Comments)-1))) 
> WHERE NOT([COMMENTS] IS NULL) AND LEN([Comments]) > 8 
>  
> Basically, I'm trying to move everything before a comma into [Comments 
> 1] and everything after the comma into [Comments 2].  The comments 2 
> script works.  See below. 
>  
> UPDATE    [460zz_Relma_Comment_Parse] 
> SET                             [Comments 2] = LTRIM(SUBSTRING([Comments], convert(bigint, 
> charindex(',', [Comments])+1), Len([Comments]) - charindex(',', 
> [Comments]))) 
> WHERE NOT([COMMENTS] IS NULL) AND LEN([Comments]) > 8 
>  
> This script [Comments 2] runs perfectly but the first one [Comments 1] 
> above gives me the following error. 
>  
> Msg 536, Level 16, State 5, Line 1 
> Invalid length parameter passed to the SUBSTRING function. 
> The statement has been terminated. 
>  
> They are basically the same script except I'm adding +1 to one script 
> and minusing one -1 from the other. 
>  
> Thanks, 
>  
> db55
 
  
Navigation:
[Reply to this message] 
 |