Utilisation de substr pour couper une chaîne sur Oracle
Je veux découper une chaîne de caractères à une longueur donnée. Si la chaîne est plus courte, je ne veux pas faire n'importe quoi. J'ai trouvé une fonction substr() qui fait le travail. Cependant il n'y a rien dans la documentation d'Oracle ce qui se passe si la chaîne est plus courte que la longueur maximale.
Par exemple ceci:
select substr('abc',1,5) from dual;
renvoie 'abc', qui est ce dont j'ai besoin.
Je voudrais vous demander si cela est sans danger, parce que la fonction ne semble pas être définis pour ce type d'utilisation. Est-il une meilleure façon de tronquer?
source d'informationauteur Michal
Vous devez vous connecter pour publier un commentaire.
Il est tout à fait ok, mais si vous le souhaitez, vous pouvez utiliser cette requête:
C'est une question intéressante. Étonnamment, la la documentation ne semble pas couvrir ce point explicitement.
Je pense que ce que vous faites est tout à fait sûr.
substr()
ne va pas "ajouter" caractères à la fin de la chaîne lorsque la chaîne est trop courte. J'ai dépendait de ce problème dans de nombreuses bases de données, notamment Oracle, au fil du temps. C'est de cette façon similaire, les fonctions de travail dans d'autres bases de données et la plupart des langues.Une sorte d'exception: lorsque le type de données d'origine est un
char()
plutôt quevarchar2()
type. Dans ce cas, la fonction doit retourner une chaîne du même type, de sorte qu'il pourrait être complétée par des espaces. Qui, cependant, est une propriété de type pas vraiment de la fonction.Il est préférable d'utiliser la requête ci-dessous
Requête ci-dessus serait de prendre la longueur de la chaîne ou le nombre 5 est moins élevé.
Si vous voulez être absolument certain que vous ne finirez pas avec les espaces à droite en utilisant SUBSTR seul (vous ne pourrez pas, mais parfois, il est réconfortant d'être vraiment sûr), vous pouvez utiliser:
De partager et de profiter.