2016-10-24 1 views
0

나는 필드는 테이블에 NUMBER을 불렀다라고 TESTINT를 서명되지 않은 서명으로 변경할 수없는 이유는 무엇입니까? Zerofill에 서명이 가능합니까?

NUMBER is int(8) Unsigned Zerofill Not Null 

지금은이 분야에서 음수를 필요로하고 나는 여전히 내가 서명으로 변경할 수 있습니다 -00023419

예를 들어 을 zerofilled 싶습니다 ,하지만 zerofilled 얻을 수 없습니다.

내가 할 경우 : 내가 할 경우가 ZEROFILL

서명하지 않은 상태로 유지 : - - alter table test modify number int(8) zerofill not null : alter table test modify number int(8) signed zerofill not null 그것은 유지 부호 ZEROFILL

을 내가 할 수없는 경우 alter table test modify number int(8) signed not null - 나는 서명받을 하지만 ZEROFILL

서명이 설정되면 음수를 넣고 zerofill로 변경하려고 시도하고 숫자가 00000000으로 변경되고 모든 것이 다시 서명되지 않도록 설정되었습니다. zerofilled 숫자를 서명하는 것은 불가능합니까?

+0

설명서를 읽으셨습니까? –

답변

3

https://dev.mysql.com/doc/refman/5.7/en/numeric-type-attributes.html는 말한다 :

당신이 숫자 컬럼에 대한 ZEROFILL을 지정하는 경우는, MySQL은 자동으로 컬럼에 UNSIGNED 속성을 추가합니다.

2006 년에 버그로보고되었으며 "버그 아님"으로 마감되었습니다. 귀하의 코멘트를 다시 https://bugs.mysql.com/bug.php?id=24356


:

그래서이 밖에 아무도를 의미하지 않습니다는 부의 제로는 MySQL 데이터베이스에 데이터를 작성했다?

오른쪽. ZEROFILL의 가장 일반적인 사용 예는 우편 번호 또는 은행 계좌 번호와 같은 항목이 고정 된 자릿수를 사용하는지 확인하는 것입니다. 이 경우에는 음수 값을 지원하지 않으므로 -000와 같은 못생긴 문자열을 왜 귀찮게합니까?

PHP로 zerofilled로 변환 할 수 있습니까?

예, PHP에서는 제로 패딩을 사용하여 숫자의 서식을 지정할 수 있습니다.

<?php 

$n = -1234; 
printf("Number is %08d\n", $n); 

출력 :

Number is -00

읽기 http://php.net/manual/en/function.sprintf.php 더 깔끔한 형식 것들을 당신이 printf()/sprintf()로 할 수 있습니다.

+0

mysql 데이터베이스에 음수가 채워진 데이터가 없다는 것을 의미합니까? 그렇다면 다음 질문은 PHP로 zerofilled로 변환 할 수 있습니까? 그래서 내 데이터베이스가 해당 필드에 -23419 있다면, 내 웹 페이지에서 -00023419로 변환해야합니다. – CheeseFlavored

-1

글쎄, 만약 당신의 칼럼이 외래 키이거나 프라이 머리 키라면, MySQL은이 수정을 허용하지 않는다. 당신은 이것을 미리해야합니다.

+0

내 downvote 아니지만 스크립트와 함께 아무것도 가능합니다 – Drew

+0

하하, 걱정 마세요! 나는 그것이 한때 나에게 일어났던 이래로 단지 도왔다. –

관련 문제