Longueur non valide paramètre passé à la GAUCHE ou à la fonction de sous-CHAÎNE dans Sql Server

Tout en essayant d'exécuter la requête ci-dessous

Declare @t table (id int, string varchar(1000))

INSERT INTO @t (id, string)
SELECT 1, 'zxzzxx,ppppbppp,trtrtr,tyyt,hgghh,fefew,rewr,rwerer' 

;WITH test (id, lft, rght, idx)
AS 
(
        SELECT t.id
                ,LEFT(t.string, CHARINDEX(', ', t.string) - 1)
                ,SUBSTRING(t.string, CHARINDEX(', ', t.string) + 2, DATALENGTH(t.string))
                ,0
        FROM @t t
        UNION ALL
        SELECT c.id
                ,CASE WHEN CHARINDEX(', ', c.rght) = 0 THEN c.rght ELSE LEFT(c.rght, CHARINDEX(', ', c.rght) - 1) END
                ,CASE WHEN CHARINDEX(', ', c.rght) > 0 THEN SUBSTRING(c.rght, CHARINDEX(', ', c.rght) + 2, DATALENGTH(c.rght)) 
                        ELSE '' END
                ,idx + 1
        FROM test c 
        WHERE DATALENGTH(c.rght) > 0
)

select id, lft from test 

J'obtiens l'erreur ci-dessous

Msg 537, Level 16, State 2, Line 8
Invalid length parameter passed to the LEFT or SUBSTRING function.

mais le même travaille pour SÉLECTIONNER 1, 'de la, rapide, brun, fox, sauter, sur, la, le, les paresseux, "chien"

S'il vous plaît aider

OriginalL'auteur aditi | 2011-06-17