두 개의 레코드를 테이블에 삽입했습니다.
create table num(id int)
insert into num values(0023)
insert into num values(23)
select * from num
쿼리하면 모두로 표시됩니다 23
. 이는 SQL Server가 선행 0을 무시 함을 의미합니다. 그 배후의 메커니즘은 무엇입니까? 삽입 한 값 (예 : 0023
및 23
) 을 SQL Server가 반환하도록하려면 어떻게해야 합니까?
정확히 0023이 23 또는 023 또는 0000000023과 다른 것으로 데이터베이스에서 인코딩 될 것으로 어떻게 예상합니까? 그들은 모두 같은 NUMBER를 나타냅니다. int는 NUMBER 데이터 형식입니다. 서버가이 "소수점 10 진수 0"값을 저장할 장소는 없습니다.
—
ErikE
이것은 좋지 않은 질문이며 프로그래밍 클래스에 대한 소개에서 다루었을 것입니다. int는 int의 특성으로 인해 선행 0을 저장할 수 없습니다. 이것은 많은 웹 리소스를 보면 해결할 수 있습니다. 데이터베이스 관리자의 입력이 필요하지 않습니다.
—
jcolebrand
선행 0이 내포됩니다. 대신 문자열을 사용하는 것 외에도 특정 수의 선행 0이 필요한 경우 int 열에 저장된 것 이상의 추가 정보입니다. 한 옵션은 문자열 열을 사용하지만 다른 옵션은 다른 열이나 UI에 선행 0 수를 저장하는 것입니다. 예를 들어, UI가 항상 패딩 선행 0을 사용하여 4 자리로 형식화하면이 정보를 UI에 저장 한 것입니다. 각 레코드에 대해 0을 다양하게 유지해야하는 경우 해당 정보를 별도의 필드에 대신 저장할 수 있습니다.
—
Dave Cousineau
id
유형VARCHAR
또는 유사 해야합니다 .