J'ai les chaînes suivantes:chaîne Parse basée sur la présence de la dernière charindex
Hello World (111)
Welcome to the World (GI 135) (222)
Another Hello World String (ID 12) (141) (333)
où je dois analyser les valeurs dans les dernières parenthèses, de sorte que la sortie serait:
111
222
333
Je ne suis pas sûr de savoir comment le faire dynamiquement pour toujours obtenir charindex/patindex pour les toutes dernières parenthèses. Voilà ce que j'ai jusqu'à présent:
DECLARE @str TABLE (varString VARCHAR(100));
INSERT INTO @str
(varString)
VALUES ('Hello World (111)'),
('Welcome to the World (GI 135) (222)'),
('Another Hello World String (ID 12) (141) (333)');
SELECT varString
,Parsed = CASE WHEN PATINDEX('%[0-9])%', varString) - PATINDEX('%([0-9]%', varString) > 0 THEN SUBSTRING(varString, PATINDEX('%([0-9]%', varString) + 1, PATINDEX('%[0-9])%', varString) - PATINDEX('%([0-9]%', varString))
ELSE NULL
END
FROM @str;
mais il ne fonctionne que pour le premier cas Hello World (111)
.
C'est assez agréable. Merci. Bonne idée. – DNac