Condition de case non respectée
Bonjour à tous,
Je dois récupérer le dernier numéro à la suite d'un segment.
Exemple :
Code:
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:
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