Une façon de gérer les virgules "coupantes" comme celle-ci serait d'utiliser un CASE
déclaration :
CASE
WHEN str LIKE ',%,' THEN SUBSTRING(str, 2, LEN(str)-2)
WHEN str LIKE ',%' THEN RIGHT(str, LEN(str)-1)
WHEN str LIKE '%,' THEN LEFT(str, LEN(str)-1)
ELSE str
END
C'est très explicite :le CASE
la déclaration considère trois situations -
- Lorsque la chaîne
str
a des virgules des deux côtés, - Lorsque la chaîne
str
commence par une virgule, mais ne se termine pas par une, et - Lorsque la chaîne
str
se termine par une virgule, mais ne commence pas par une.
Dans le premier cas, le premier et le dernier caractères sont supprimés ; dans le second cas, le caractère le plus à gauche est supprimé; dans le dernier cas, le caractère de fin est supprimé.