0
votes

Pourquoi l'erreur paramètre de longueur non valide est-elle passée à la fonction de gauche ou de sous-chaîne?

J'utilise cela pour couper les données à gauche du panneau de conduite, signifie que je veux seulement que des données à gauche du signal de tuyau puisent entier si aucun signe de tuyau n'est là, il jette une erreur.

ERREUR:

Paramètre de longueur non valide transmis à la fonction de gauche ou de sous-chaîne.

code: xxx


4 commentaires

BTW Ajoutez un fin à la fin de cas.Quand Syntaxe.


ouais j'ai mais toujours même problème


ProjectNo est de type numérique ..? Cela pourrait être le problème, on dirait que vous avez besoin de convertir en une chaîne.


non, sa corde monsieur


3 Réponses :


0
votes

Ceci devrait être

 SELECT TOP 1000 [ID]
              ,case
            when CHARINDEX('(', ProjectNo) > 0 then
                 rtrim(left(ProjectNo, CHARINDEX('(', ProjectNo) - 1))
            else
                ProjectNo
          end ProjectNo


0 commentaires

3
votes

Ceci est parce que charindex ('(', projectno) - 1 code> peut donner une valeur négative non valide, comme états d'erreur. Je crois que vous voulez:

SELECT TOP 1000 [ID]
,case when CHARINDEX('|', ProjectNo) > 0 then
        rtrim(left(ProjectNo, CHARINDEX('|', ProjectNo) - 1))
      else ProjectNo
 end ProjectNo


0 commentaires

1
votes

Vous pouvez simplement ajouter le caractère que vous recherchez dans le charindex () expression: xxx


0 commentaires