Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL - Pourquoi remplir des espaces lors de la comparaison de caractères ?

Vous confondez les différents types de personnages et ce qui se passe. Lorsque vous exécutez :

SELECT * from SOME_TABLE where CUSTOMER_NAME = 'Popeye '

Aucun espace n'est ajouté "à chaque ligne de SOME_TABLE". La seule question est la largeur des résultats. Cette largeur est définie par les propriétés des colonnes dans SOME_TABLE, et non par ce qui apparaît dans la clause WHERE.

Si votre CUSTOMER_NAME est déclaré comme une valeur char(x), alors la chaîne doit avoir cette longueur. Dites, c'est char(10) et vous lui attribuez 'Popeye'. La valeur a six caractères et cela doit être complété à 10, d'une manière ou d'une autre. La norme SQL est de remplir sur le côté droit, ce qui rend la valeur 'Popeye ' .

Si vous voulez des chaînes de longueur variable, utilisez varchar ou varchar2.