`Unsign` trong MySQL có nghĩa là gì và khi nào sử dụng nó?


278

"Không dấu" có nghĩa là gì trong MySQL và khi nào tôi nên sử dụng nó?

Câu trả lời:


527

MySQL nói:

Tất cả các loại số nguyên có thể có một thuộc tính tùy chọn (không chuẩn) KHÔNG ĐƯỢC KÝ. Loại không được ký có thể được sử dụng để chỉ cho phép các số không âm trong một cột hoặc khi bạn cần một phạm vi số trên lớn hơn cho cột. Ví dụ: nếu một cột INT bị CHẤP NHẬN, kích thước của phạm vi của cột là như nhau nhưng các điểm cuối của nó thay đổi từ -2147483648 và 2147483647 lên đến 0 và 4294967295.

Khi nào tôi sử dụng nó?

Hãy tự hỏi mình câu hỏi này: lĩnh vực này có bao giờ chứa giá trị âm không?
Nếu câu trả lời là không, thì bạn muốn một UNSIGNEDkiểu dữ liệu.

Một lỗi phổ biến là sử dụng khóa chính là mức tăng tự động INTbắt đầu từ 0 , nhưng loại đó là SIGNED, trong trường hợp đó, bạn sẽ không bao giờ chạm vào bất kỳ số âm nào và bạn đang giảm phạm vi của id có thể xuống còn một nửa.


8
các giá trị đại diện cho 'kích cỡ' của mọi thứ, như số lượng của một mặt hàng cụ thể trên một đơn đặt hàng hoặc khoảng cách giữa hai vị trí, thường sẽ không được ký
SingleNegationElimination

31
Câu trả lời tuyệt vời, có vẻ lạ khi mysql sẽ không mặc định số nguyên thành không dấu khi chúng tự động tăng danh tính?
dây00

3
Nếu bạn muốn câu trả lời rõ ràng hơn thì hãy xem stackoverflow.com/a/11515613/6335029
NaveenDA

Tôi thực sự muốn có một positivethuộc tính, vì dường như thậm chí phổ biến hơn là bạn chỉ muốn làm việc với các số dương, khác không.
still_dreaming_1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.