3 votes

Fonction de découpage du serveur SQL

J'ai un problème avec le serveur SQL. Je veux supprimer les espaces en utilisant Ltrim et Rtrim.

Ma requête est la suivante

select len('test        ')

Retour 6

select len(rtrim(ltrim('test        ')))

Retour 6

Pourquoi ne supprime-t-il pas l'espace ?

J'ai vérifié que les valeurs ascii pour cet espace sont de 32.

Une aide ?

Merci.

7voto

Marek Grzenkowicz Points 9652

Parce qu'il n'y a pas d'espace dans cette chaîne - après test il y a deux caractères de tabulation horizontale ( \t ).

Tabs, not spaces

2voto

AdaTheDev Points 53358

Ça n'a pas vraiment de sens pour moi :

SELECT LEN('test  ') 

devrait renvoyer 4, et non 6 - LEN() va PAS compter les espaces de fin de ligne.

Alors que si tu le faisais :

SELECT DATALENGTH('test    ')

cela renverrait 6 comme DATALENGTH (longueur de données) fait compter les espaces de fin de ligne.

1voto

alykhalid Points 887

Len Renvoie le nombre de caractères de la chaîne de caractères spécifiée, à l'exclusion des blancs de fin de chaîne.

Par conséquent, len ne compte pas les blancs de fin de chaîne supplémentaires dans votre chaîne. Si vous placez les blancs avant la chaîne, ils seront comptés.

  • select len('test ') (len = 4)
  • select len(' test') (len = 5)

0voto

Fedor Hajdu Points 2578

En fait, l'espace est rogné dans les deux cas et c'est la norme dans le serveur SQL. (Len fait le trimming)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X