안녕하세요 저는 Int로 설정된 데이터베이스에 열이 있습니다.MySQL Int는 0을 제거합니다
그러나 내 데이터는 항상 0으로 시작하므로 새 레코드를 추가 할 때마다 0이 제거되고 첫 번째 문자는 어느 시점에서 1이되어야합니다.
이 문제를 어떻게 극복 할 수 있습니까?
VARCHAR를 사용하는 가장 좋은 방법은 PHP를 사용하여 유효성을 검사하는 것입니까? 나는 02118272을 입력하면
업데이트
은이 2118272.
안녕하세요 저는 Int로 설정된 데이터베이스에 열이 있습니다.MySQL Int는 0을 제거합니다
그러나 내 데이터는 항상 0으로 시작하므로 새 레코드를 추가 할 때마다 0이 제거되고 첫 번째 문자는 어느 시점에서 1이되어야합니다.
이 문제를 어떻게 극복 할 수 있습니까?
VARCHAR를 사용하는 가장 좋은 방법은 PHP를 사용하여 유효성을 검사하는 것입니까? 나는 02118272을 입력하면
업데이트
은이 2118272.
나는 당신이 그 필드에 VARCHAR 타입을 사용해야한다는 생각으로 데이터베이스에 저장됩니다. 당신은 숫자가 아닌 모든 문자를 삭제 이와
$var=preg_replace("/[^\d]/","",$var);
을 다음 초기 0을 보존 DB에이 값을 넣을 수 있습니다 : 당신이 PHP에서 정수로 변수를 변환 할 경우, 당신은 단순히이 작업을 수행 할 수 있습니다.
-1 숫자의 서식을 저장하면 서식에서 두 값을 구별 할 때 유용합니다. 예를 들어, 01은 1과 동일하지 않습니다. – JohnFx
intval()을 사용하는 것이 더 쉽습니다. – SheperdOfFire
정수 7
은 정수 000000000000000000000000007
과 같습니다. 그들은 둘 다 ... 나중에 알지 .7. 데이터베이스에 저장되면 실제로는 000000000000000000000000007
처럼 저장되지만 대부분의 MySQL 클라이언트는 모든 0을 표시하지 않습니다. 이 숫자의 특정 번호를 사용하여이 숫자를 표시하는 응용 프로그램에서 중요한 경우에는 str_pad()
기능을 사용하여 원하는대로
, 당신은 많은 선도적 인 0을 다시 추가 할 수 있습니다 : 여기
str_pad($your_string, 10, '0', STR_PAD_LEFT);
을 10
는 길이는 당신은 그 문자열을 원한다면 '0'
은 그 길이를 만들기 위해 추가 될 문자이고, STR_PAD_LEFT
은 문자열의 왼쪽에 문자를 추가한다고 말합니다.
한편 '007'
숫자는 기본적으로 숫자 '7'
과 다른 경우 VARCHAR()
필드를 사용하여 저장해야합니다. 이들은 더 이상 정수가 아닙니다. 그들은 매우 다른 의미의 문자열입니다.
데이터베이스에 10 진수로 저장되지 않았으므로 DB에 0이 오도록 주장하는 것은 잘못되었습니다. 즉,이 답변의 나머지 부분은 문제를 해결하는 올바른 방법입니다. –
물론 데이터베이스에는 0이 붙습니다.숫자 7은'000000000000000000000000000111'으로 저장 될 것입니다. 29 개의 선행 0이있는 32 비트 정수입니다. 물론, 그것들은 ** 십진 ** 제로가 아니지만 개념은 완전히 동일합니다. – VoteyDisciple
데이터베이스에 저장해야하는 내용은 데이터입니다. 해당 데이터의 형식은 데이터베이스 자체가 아닌 응용 프로그램의 책임입니다.
정수로 저장하고 앞에 0이있는 소수점 7 자리가 필요한 경우 올바른 위치는 응용 프로그램에 데이터를 추출한 후입니다.
데이터 예제를 제공해주십시오. 지금은 어떻게 보이고 어떻게 보이게 할 수 있습니까? – Quassnoi
이것은 데이터 문제가 아니라 프레젠테이션 문제입니다. 02118272 번호를 "표시"하고 싶지만 숫자는 여전히 2118272입니다. 사용자 인터페이스에서이를 수정해야합니다. –