je créerais un script qui itérerait sur les enregistrements d'une table avec un curseur
et extraire d'une valeur de colonne formatée comme celle-ci "yyy: // xx / bb / 147011"
uniquement le numéro final 147011 et de mettre cette valeur dans une variable.
Il est possible de faire quelque chose comme ça?
Merci beaucoup.
3 Réponses :
Si la valeur numérique a une position exacte définie avec des exemples de données, vous pouvez faire:
SELECT t.*, SUBSTRING(t.col, PATINDEX('%[0-9]%', t.col), LEN(t.col))
FROM table t;
Vous n'avez pas besoin d'un curseur pour cela. Vous pouvez simplement utiliser une requête. Ce qui suit obtient tout après le dernier / :
select right(str, charindex('/', reverse(str)) - 1 )
from (values ('yyy://xx/bb/147011')) v(str)
Il ne vérifie pas spécifiquement s'il s'agit d'un nombre, mais cela peut également être ajouté.
Vous pouvez également utiliser la requête ci-dessous.
SELECT RIGHT(RTRIM('yyy://xx/bb/147011'),
CHARINDEX('/', REVERSE('/' + RTRIM('yyy://xx/bb/147011'))) - 1) AS LastWord
pardonnez mon ignorance, mais pourquoi est-il nécessaire de RTRIM la chaîne?
@Giu Cela n'a pas d'impact majeur.