Je ne suis pas tout à fait quand je fais un plaine d'insertion de données numériques dans un champ varchar pourquoi est-il gauche pad avec 2 espaces. Est-ce que varchar n'est pas censé couper les espaces (trailing ok ... mais où est la règle que vous "frontpad" avec des espaces). Pourquoi pad puis avec 2 espaces principauxTeradata SQL VARCHAR et les espaces
INSERT INTO v VALUES (,1243444,3455435,8768810,'fdff',5,7,8,,)
Ici (,1243444,3455435,8768810,'fdff',5,7,8,,)
sont (someirrelvant_datatype,varchar(x),varchar(y),varchar(z),char(5),smallint,int,int,Timestamp)
donc des données se présente comme suit
SEL CHAR2HEXINT (colA) ,colA FROM v
313732353732 172572 /* this is some other pre-existing value*/
2020202033343535343335 3455435 /* this is value just inserted */
Donc, si vous voyez ci-dessus 20202020
Hex pour 2 spaces aka ' '
2ème question (pas continuation de la situation ci-dessus)
J'ai aussi données pour un varchar (50) col comme celui-ci
HMSA
232434343
HMSA
4343434343
434343434
Ici, le HMSA
a un espace de fin 2020 HEX
mais d'autres valeurs n'ont pas trailing spaces
. Pas sûr de ce qui se passe. Maintenant, voici varchar
censé jeter tous les espaces de fuite? comment se fait-il que les données ont atterri avec HMSA<space>
Pas sûr. Des idées ?
Ok permet donc de regarder quelques bizarreries venant de ceci:
insert ('yada ') into tb /* tb is volatile & SET.There are 4 spaces */
insert ('yada') into tb
Query Failed. 2802: Duplicate row error in tb
Bien voir ce que cela ressemble
7961646120202020 yada /*There are 4 spaces - 20 x 4 */
donc sur la 2ème insert il secouèrent la partie de comparaison de l'espace et fait un trim(oldvalue) vs trim (new value)
Merci .... Dieter comme toujours, une merveilleuse explication et de «nouvelles nouvelles» sur Beaucoup de choses qui se passent dans le monde de la DB. – user1874594