183 votes

Supprimer le dernier caractère d'une chaîne dans T-SQL?

Comment puis-je supprimer le dernier caractère d'une chaîne dans T-SQL?

IE 'TEST STRING'

revenir:

'TEST STRIN'

216voto

AdaTheDev Points 53358

par exemple

 DECLARE @String VARCHAR(100)
SET @String = 'TEST STRING'

-- Chop off the end character
SET @String = LEFT(@String, LEN(@String) - 1)

SELECT @String
 

128voto

Bill Hoenig Points 441

Si, pour une raison quelconque, la logique de votre colonne est complexe (cas où ... alors ... sinon ... fin), les solutions ci-dessus vous obligent à répéter la même logique dans la fonction len (). La duplication de la même logique devient un gâchis. Si tel est le cas, il s'agit d'une solution à noter. Cet exemple supprime la dernière virgule indésirable. J'ai finalement trouvé un usage pour la fonction REVERSE.

 select reverse(stuff(reverse('a,b,c,d,'), 1, 1, ''))
 

80voto

Adrien Points 1639

Essaye ça:

 select substring('test string', 1, (len('test string') - 1))
 

32voto

Max Grachev Points 91

Si votre chaîne est vide,

 DECLARE @String VARCHAR(100)
SET @String = ''
SELECT LEFT(@String, LEN(@String) - 1)
 

alors ce code provoquera le message d'erreur "Paramètre de longueur non valide transmis à la fonction de sous-chaîne".

Vous pouvez le gérer de cette façon:

 SELECT LEFT(@String, NULLIF(LEN(@String)-1,-1))
 

Il retournera toujours le résultat, et NULL en cas de chaîne vide.

7voto

Behrens Points 630

Si votre colonne est text et non varchar , alors vous pouvez utiliser ceci:

 SELECT SUBSTRING(@String, 1, NULLIF(DATALENGTH(@String)-1,-1))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X