@@ -420,8 +420,8 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
420420
421421 while ( pointer <= ( subparts . Length - 1 ) )
422422 {
423- var piece = subparts [ pointer ] . ToString ( ) . ToUpperInvariant ( ) . Trim ( ) ;
424- if ( pointer > 0 && ! substart )
423+ var piece = subparts [ pointer ] ? . ToString ( ) . ToUpperInvariant ( ) . Trim ( ) ;
424+ if ( pointer > 0 && ! substart && piece != null )
425425 {
426426 if ( ! VERB . SpecialChar . Any ( s => s == piece ) && criteriaValue )
427427 {
@@ -444,7 +444,8 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
444444 }
445445 }
446446
447- if ( ! criteriaValue && VERB . AndOrOpertors . Any ( s => s == piece ) )
447+
448+ if ( ! criteriaValue && ( piece is null || VERB . AndOrOpertors . Any ( s => s == piece ) ) )
448449 {
449450 pointer = subparts . Length ;
450451 break ;
@@ -481,6 +482,7 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
481482 {
482483 field = piece ;
483484 }
485+
484486 if ( substart && criteriaValue && ! string . IsNullOrEmpty ( field ) )
485487 {
486488
@@ -494,7 +496,14 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
494496 casewrap . Append ( " " ) . Append ( VERB . When ) ;
495497 }
496498
497- casewrap . Append ( $ " { field } = { ( setasfield ? subparts [ pointer ] : Parameter ( ctx , subparts [ pointer ] ) ) } ") ;
499+ if ( subparts [ pointer ] is not null )
500+ {
501+ casewrap . Append ( $ " { field } = { ( setasfield ? subparts [ pointer ] : Parameter ( ctx , subparts [ pointer ] ) ) } ") ;
502+ }
503+ else
504+ {
505+ casewrap . Append ( $ " { field } is NULL") ;
506+ }
498507 substart = false ;
499508 setasfield = false ;
500509 start = false ;
0 commit comments