je la requête suivante:Substring SQL en utilisant deux problèmes charindexes
DECLARE @str VARCHAR(500)
SET @str = 'Barcode: 22037 CaseSize: 1 Qty: 3'
SELECT RTRIM(LTRIM(
SUBSTRING(@str, CharIndex('CaseSize: ', @str) + 10, CHARINDEX('Qty:', @str))
))
Les résultats suivants: « 1 Quantité: 3 »
Je voudrais être en mesure de sélectionner uniquement le nombre Taille de cas , qui est un dans ce cas.
Quelle est la méthode la plus simple pour accomplir cette tâche? Un collègue a résolu le problème en créant un début et variable fin, puis de les utiliser dans la sous-chaîne:
Declare @start INT , @end INT
SET @start = CharIndex('CaseSize: ', @str) + 10
SET @end = CHARINDEX('Qty:', @str)
SELECT CONVERT(INT, LTRIM(RTRIM(SUBSTRING(@str, @start, @end - @start))))
Depuis que je fais cela dans une instruction select, quelle serait la meilleure façon? C'EST À DIRE. Pourquoi mon instruction select ci-dessus échoue?
Vous devriez probablement utiliser les colonnes 'Barcode', 'CaseSize' et 'Qty' au lieu de stocker ces informations dans une chaîne. –
Très vrai. Cependant, je ne suis qu'un inhérent de ce schéma de données. – user99143