Longueur non valide paramètre passé à la GAUCHE ou la fonction SUBSTRING

J'ai la description suivante: "l'Échantillon de Produit Fabricant Nom du Produit XYZ - Taille' et je voudrais seulement obtenir la valeur de "Nom du Produit XYZ' à partir de ce. Si c'était seulement une ligne que j'avais n'ai pas de problème juste à l'aide de sous-CHAÎNE, mais j'ai des milliers de dossiers et, bien que la valeur initiale de l'Échantillon de Produit Maker est le même pour tous les produits, le Nom du Produit pourrait être différente et je ne veux pas que quoi que ce soit après le trait d'union.

Ce que j'ai jusqu'à présent a généré l'erreur dans l'en-tête de cette question.

SELECT i.Itemid,
       RTRIM(LTRIM(SUBSTRING(i.ShortDescription, 25, (SUBSTRING(i.ShortDescription, 25, CHARINDEX('-', i.ShortDescription, 25)))))) AS ProductDescriptionAbbrev,
       CHARINDEX('-', i.ShortDescription, 0) - 25  as charindexpos
FROM t_items i

Je suis l'Argument de type de données varchar est pas valide pour l'argument 3 de la fonction de sous-chaîne'

Comme vous pouvez le voir, j'obtiens la valeur de la dernière ligne de l'instruction sql, mais quand j'essaie de le brancher que dans la fonction SUBSTRING-je obtenir diverses questions.

OriginalL'auteur brianhevans | 2012-10-23