7

Kiedy zapisuję dane w tabeli, dodaje się dodatkowe spacje do wartości na końcu. Zauważyłem, że ponieważ długość kolumny wynosi 5, jeśli wstawiam wartość o długości 3 znaków, dodawane są 2 dodatkowe spacje. Czy ktoś może rozwiązać ten problem.Dodatkowe miejsca dodawane na końcu w kolumnie

+0

Proszę podać instrukcję wstawiania i definicję tabeli. –

Odpowiedz

21

Czy kolumna jest typu CHAR(5) zamiast VARCHAR(5)?

  • CHAR(x) tworzy kolumnę, która zawsze przechowuje x znaków, i podkłada dane spacjami.
  • VARCHAR(x) tworzy kolumnę, która zmienia długości ciągów w celu dopasowania do wstawionych danych.
+2

+1 varchar wciąż może mieć spacje końcowe z SET ANSI_PADDING ON chociaż – gbn

+0

@ gbn Nigdy nie sprawdziłem, co to właściwie robi; Dziękuję za to, że to zbadałem. Jeśli poprawnie zrozumiem dokumentację, nawet przy ANSI_PADDING ON kolumna VARCHAR (x) będzie zawierała jedynie spacje końcowe, jeśli jawnie je tam umieścisz. –

+0

Poprawnie, ale może powodować [zamieszanie] (http://stackoverflow.com/search?q=user%3A27535+ansi_padding) Zwłaszcza, gdy będzie on włączony w późniejszych wersjach. – gbn

4

To jest właściwość typ danych CHAR. Jeśli nie potrzebujesz dodatkowych spacji, musisz użyć VARCHAR, chociaż w przypadku małego pola minimalna wartość narzutowa w porównaniu do standardowego CHAR. Powiedziawszy to, uważa się, że obecnie VARCHAR jest tak dobry jak CHAR.

0

Zmienne CHAR będą przechowywać dodatkowe dopełnienie, może potrzebujesz zamiast tego używać zmiennych VARCHAR2?

+0

Brak VARCHAR2 w SQL Server ... – gbn