Bonjour à tous,

Je dois récupérer le dernier numéro à la suite d'un segment.
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Exemple #1 :
    Pour le segment '1.1.2', je veux récupérer le '2'

Exemple #2
    Pour le segment '10.12,, je veux récupérer le '12'

Exemple #3
    Pour le segment '5', je veux récupérer le '5'
Voilà le code de test que j'ai écris jusqu'ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
SELECT 
       CASE
	WHEN CHARINDEX('.', '1') = 0 THEN
	    '1'
	ELSE
	    RIGHT('1', CHARINDEX('.', REVERSE('1')) - 1)
            /* Ou cette méthode alternative
            SUBSTRING('1', LEN('1') - CHARINDEX('.', REVERSE('1')) + 2, LEN('1') - (LEN('1') - CHARINDEX('.', REVERSE('1')) + 1))
            */
 	END
Le problème, c'est que MS SQL me retourne l'erreur suivante :
Paramètre de longueur non valide passé à la fonction substring.

C'est n'importe quoi ! Comment la première condition du case peut-elle échouer ?

CHARINDEX('.', '1') donne bien 0 comme résultat, alors pourquoi va-t-il dans le ELSE ???

Merci