2012-01-17 42 views
27

Tôi luôn nghĩ INT (5) có nghĩa là một số có kích thước tối đa là 5 chữ số. Tôi đã cố gắng nhập một số lượng lớn bên trong nó và bằng cách nào đó đã bị cắt xuống 2147483647INT (5) trong mysql có nghĩa là gì?

Điều này rõ ràng là không 5 chữ số. Vậy INT (5) có giới hạn gì?

Trả lời

22

INT luôn rộng bốn byte. 5 là "chiều rộng màn hình".

+0

Liên kết bị hỏng. – Xethron

+0

bạn có thể cho ví dụ không? – mikewasmike

+0

Nhưng máy chủ sử dụng nó như thế nào? Mặc dù chiều rộng là 5, máy chủ cho phép các số nguyên có nhiều hơn 5 chữ số. Có phải nó chỉ sử dụng các ứng dụng được xây dựng bằng cách sử dụng các giao diện truy cập cơ sở dữ liệu như trình điều khiển ODBC và JDBC không? – mvsagar

6

Trong MySQL, INT (5) không có nghĩa là các giá trị được giới hạn ở các giá trị 5 ký tự. Nó chỉ có nghĩa là MySQL sẽ cố gắng để pad các giá trị này với không gian/zero khi trả lại chúng.

Phạm vi số của bất kỳ INT được ký nào bao gồm INT (10), INT (5) hoặc bất kỳ INT (n) nào khác là: -2,147,483,648 ... 2,147,483,647, nhiều nhất là 10 chữ số.

+0

Ngạc nhiên đây là lần đầu tiên tôi thực sự hiểu khái niệm chiều dài INT, cảm ơn bạn rất nhiều! – Tompina

19

Từ MySQL Docs, Numeric Type Attributes

MySQL hỗ trợ một phần mở rộng cho tùy chọn xác định độ rộng màn hình của các kiểu dữ liệu số nguyên trong ngoặc đơn sau từ khóa cơ sở cho các loại. Ví dụ: INT (4) chỉ định INT có chiều rộng màn hình gồm bốn chữ số. Chiều rộng hiển thị tùy chọn này có thể được sử dụng bởi các ứng dụng để hiển thị số nguyên giá trị có chiều rộng nhỏ hơn chiều rộng được chỉ định cho cột bằng cách đặt chúng vào khoảng trống. (Tức là, chiều rộng này được trình bày trong siêu dữ liệu trở lại với tập kết quả. Cho dù nó được sử dụng hay không là tùy thuộc vào ứng dụng.)

+0

Được trả lời! Một số cách tôi bỏ lỡ để đọc từ các tài liệu! Câu trả lời này phải là câu trả lời đúng nhất cho câu hỏi. – mvsagar

0

Một int có thể được giữa -2147483648 2147483647 ký, hoặc 0 và 4294967295 chưa được ký.

Thats lý do tại sao nó đã bị cắt xuống rằng nếu bạn bước vào một số lớn hơn nó như là một giá trị ký

3

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

"M chỉ ra chiều rộng hiển thị tối đa đối với các loại nguyên. Màn hình pháp lý tối đa chiều rộng là 255. chiều rộng hiển thị là không liên quan đến phạm vi giá trị một loại có thể chứa, như mô tả trong Mục 10.2, “Numeric loại”"

2

https://alexander.kirk.at/2007/08/24/what-does-size-in-intsize-of-mysql-mean/
M cho biết chiều rộng hiển thị tối đa cho các loại số nguyên. Đối với các loại dấu phẩy động và điểm cố định, M là tổng số chữ số có thể được lưu trữ. Đối với các loại chuỗi, M là độ dài tối đa. Giá trị cho phép tối đa của M phụ thuộc vào loại dữ liệu.