Je viens de découvrir un peu ... Je ne sais pas ce que je l'appelle, mais va ici:fonction longueur Oracle() retour valeur incorrecte
SELECT part_num,
length(trim(part_num))
FROM part_programs
WHERE rownum <= 10;
... Résultats:
PART_NUM LENGTH(TRIM(PART_NUM))
--------------- ----------------------
THAB256 8
THA1256674 11
THA1256674GU 13
THA1257141 11
THA1257141FR 13
THA1257141FR1 14
THA1257141TD 13
THA2002013 11
THA2002013MI 13
THA2002013MI1 14
L'entier renvoyé par l'appel length() renvoie en réalité 1 + realLength des valeurs.
Je ne sais pas par où commencer, quelqu'un veut faire la lumière?
Cela ressemble une supposition assez juste - pour tester, exécuter une instruction d'insertion avec des données connues et voir ce que cela produit en tant que longueur. En outre, si vous avez UNIX et une interface de ligne de commande SQL, essayez quelque chose comme "oracle select part_num from part_programs | od -xcb" pour obtenir un vidage hexadécimal de la sortie - qui peut montrer des caractères douteux dans la colonne. – paxdiablo
Bracketing est une bonne idée - j'aime ça. Pour obtenir la vraie longueur, vous pouvez essayer quelque chose comme: longueur (trim (remplacer (remplacer (partie_num, chr (10)), chr (13)))) –