Trường ký tự varchar, hoặc độ dài thay đổi, là loại trường được sử dụng thường xuyên nhất để lưu trữ văn bản có độ dài dưới 256 ký tự
mã mẫu$field['fieldname'] = array[
'type' => 'varchar',
'length' => 255, //
'not null' => FALSE, // TRUE or FALSE.
'default' => 'some default value',
'description' => t['field fieldname of table tablename.'],
]
Ghi chú. Độ dài bạn đặt ở đây cho biết số lượng ký tự tối đa mà bạn muốn lưu trữ. Loại VARCHAR của MySQL được khai báo với độ dài cho biết số lượng ký tự tối đa mà bạn muốn lưu trữ. Ví dụ: VARCHARCHAR[30] có thể chứa tối đa 30 ký tự
Ánh xạ trường MySQL trong lược đồ. tập tin inc 'varchar:normal' => 'VARCHAR'
Ký tự tối đa được phépPhiên bản MySQLKý tự tối đa được phépMySQL 5. 0. 2 trở về trước255 ký tựMySQL 5. 0. 3 trở lên65,535 ký tựThông tin lưu trữL + 1 byte nếu giá trị cột yêu cầu 0 − 255 byte, L + 2 byte nếu giá trị có thể yêu cầu nhiều hơn 255 byte trong đó L là L là độ dài byte của chuỗi mà bạn đang lưu trữ và không phải là kích thước tối đa mà bạn đã đặt
Các giá trị trong cột VARCHAR là các chuỗi có độ dài thay đổi. Độ dài có thể được chỉ định dưới dạng giá trị từ 0 đến 65,535. Độ dài tối đa hiệu quả của VARCHAR tùy thuộc vào kích thước hàng tối đa [65.535 byte, được chia sẻ giữa tất cả các cột] và bộ ký tự được sử dụng
Đảm bảo rằng bạn biết về tác dụng của bộ ký tự nhiều byte. VARCHAR[255] lưu trữ 255 ký tự, có thể nhiều hơn 255 byte
Để viết SQL di động, bạn phải sử dụng các kích thước loại CHAR
và VARCHAR
không vượt quá giới hạn của nhãn hiệu cơ sở dữ liệu mục tiêu [Informix, Oracle, SQL Server, v.v.]
Loại CHAR
là loại đệm trống. Chuỗi "abc" trong cột CHAR[200]
trên thực tế sẽ nhận được thêm 197 số trắng ở cuối. Loại VARCHAR
được thiết kế để lưu trữ các chuỗi ký tự có độ dài thay đổi. Do đó, loại CHAR[N]
nên được sử dụng cho dữ liệu chuỗi có độ dài cố định [chẳng hạn như mã "ABC-123"
], trong khi loại VARCHAR[N]
nên được sử dụng cho dữ liệu chuỗi có độ dài thay đổi [chẳng hạn như tên và mô tả]. Hơn nữa, với một số thương hiệu cơ sở dữ liệu, trong các giá trị VARCHAR
, khoảng trắng ở cuối có ý nghĩa về mặt ngữ nghĩa, trong khi khoảng trống ở cuối của các giá trị SQL CHAR
không có ý nghĩa
Với Informix, loại SQL VARCHAR
được thiết kế với giới hạn 255 byte. Mặt khác, loại CHAR
có giới hạn lớn hơn nhiều là 32767 byte. Trên thực tế, lẽ ra nó phải là cách khác, vì loại CHAR
đệm trống phù hợp hơn với dữ liệu có độ dài cố định nhỏ
Đối với các chuỗi ký tự có độ dài thay đổi lớn, Informix đã giới thiệu loại VARCHAR
5, lần đầu tiên có giới hạn 2048 byte và trong các phiên bản IDS trẻ hơn có giới hạn 32739 byte
Hầu hết các thương hiệu cơ sở dữ liệu được Genero hỗ trợ đều có giới hạn cao hơn đối với loại VARCHAR
so với loại CHAR
. Ví dụ: Oracle DB CHAR
có giới hạn là 2000, trong khi VARCHAR
9 có giới hạn là 4000 [byte hoặc ký tự, tùy thuộc vào ngữ nghĩa độ dài]
Ghi chú. Giới hạn kích thước loại BDL VARCHAR
của Genero là 65524 [giống như loại BDL CHAR
], và do đó có thể lưu trữ dữ liệu cột VARCHAR
5 của Informix hoặc bất kỳ dữ liệu cột nào của thương hiệu cơ sở dữ liệu ________3____.
Độ dài CHAR nào nên được sử dụng?
Để lưu trữ dữ liệu ký tự ngắn và độ dài cố định, hãy sử dụng cột CHAR[N]
, trong đó n thường từ 10 đến 100 [byte hoặc ký tự]. Tất cả các thương hiệu cơ sở dữ liệu được Genero hỗ trợ đều có thể hỗ trợ kích thước CHAR
như vậy
Độ dài VARCHAR nào nên được sử dụng?
Để lưu trữ các chuỗi ký tự có độ dài thay đổi không vượt quá 255 byte, hãy sử dụng loại VARCHAR[N]
. Tất cả các thương hiệu cơ sở dữ liệu được Genero hỗ trợ đều có thể hỗ trợ kích thước VARCHAR
như vậy
Varchar trong MySQL là kiểu dữ liệu được sử dụng để lưu trữ văn bản có độ dài tối đa là 65535 ký tự. Các cột varchar trong bảng có chuỗi có độ dài thay đổi có thể chứa số hoặc ký tự hoặc cả hai. Kiểu dữ liệu này chỉ có khả năng lưu trữ 255 ký tự trước phiên bản 5. 0. 3, nhưng với phiên bản này trở đi, nó có thể chứa tới 65535 ký tự. Nó có thể được lưu trữ trong MySQL dưới dạng tiền tố có độ dài 1 byte hoặc 2 byte cộng với kích thước thực
Tiền tố độ dài chỉ định độ dài byte của giá trị chuỗi, không phải kích thước tối đa mà chúng tôi đã đặt. Nếu các giá trị không yêu cầu nhiều hơn 255 byte, một cột sẽ sử dụng tiền tố độ dài cộng với một byte. Nếu các giá trị yêu cầu nhiều hơn 255 byte, một cột sẽ sử dụng tiền tố độ dài cộng với hai byte
Độ dài tối đa của VARCHAR trong MySQL tùy thuộc vào kích thước hàng tối đa là 65.535 byte, được chia sẻ giữa tất cả các cột ngoại trừ cột TEXT/BLOB và bộ ký tự được sử dụng. Nó có nghĩa là tổng số cột không được nhiều hơn 65535 byte
Hãy để chúng tôi hiểu nó với sự giúp đỡ của một ví dụ
Chúng tôi sẽ tạo hai bảng và đặt tên là Test1 và Test2. Cả hai bảng chứa hai cột có tên T1 và T2. Thực hiện câu lệnh sau để tạo bảng "Test1"
Câu lệnh trên đã tạo bảng thành công vì độ dài cột T1 = 32765 cộng 2 byte và T2 = 32766 cộng 2 byte bằng 65535 [32765+2+32766+2]. Vì vậy, chiều dài cột thỏa mãn kích thước hàng tối đa của varchar, là 65535
Bây giờ, chúng ta sẽ xem điều gì sẽ xảy ra nếu kích thước cột vượt quá kích thước tối đa của varchar 65535. Thực hiện câu lệnh dưới đây khi chúng tôi đã tăng kích thước của cột T1 để tạo bảng Test2
Sau khi thực hiện câu lệnh trên, MySQL tạo ra lỗi. Nó có nghĩa là kích thước hàng tối đa không thể vượt quá 65.535 byte. Trong mọi trường hợp, nếu nó tăng lên, câu lệnh không thành công và MySQL sẽ báo lỗi
Trong trường hợp khác, giả sử chúng ta đã tạo một bảng có tên Test3 bằng cách sử dụng câu lệnh bên dưới
Tiếp theo, chèn các giá trị vào bảng bằng cách sử dụng câu lệnh bên dưới
Bây giờ, hãy thực hiện câu lệnh trên. MySQL đưa ra thông báo lỗi. Dữ liệu quá dài đối với cột 'Tên' ở hàng 1. Đầu ra giải thích nó rõ ràng hơn
MySQL VARCHAR và không gian
MySQL không đệm không gian cho các giá trị varchar khi chúng được lưu trữ. MySQL cũng giữ lại các khoảng trắng ở cuối khi chúng lưu trữ hoặc truy xuất các giá trị varchar. Chúng ta có thể hiểu qua ví dụ sau khi câu lệnh chèn thêm giá trị vào cột Tên của bảng Test3
Tiếp theo, thực hiện câu lệnh SELECT để lấy các giá trị
Nó sẽ cho đầu ra sau trong đó MySQL bao gồm khoảng trắng ở cuối khi đếm độ dài vì nó không làm tăng độ dài cột
Tuy nhiên, khi chúng tôi cố gắng chèn một giá trị varchar có khoảng trắng ở cuối vượt quá độ dài cột, MySQL sẽ cắt bớt các khoảng trắng ở cuối. Ngoài ra, MySQL đưa ra cảnh báo. Ví dụ sau giải thích rõ hơn
Câu lệnh trên chèn một giá trị có độ dài là sáu vào cột tên. Giá trị vẫn được chèn vào cột, nhưng MySQL cắt bớt khoảng trắng ở cuối trước khi thêm giá trị. Chúng tôi có thể xác minh bằng truy vấn bên dưới nơi chúng tôi có thể thấy câu lệnh chèn được thêm thành công nhưng có cảnh báo đưa ra. Dữ liệu bị cắt bớt đối với cột 'tên' ở hàng 1
Sự khác biệt giữa Kiểu dữ liệu Char và Varchar
Các kiểu dữ liệu char và varchar đều tuân theo ký tự ASCII. Chúng gần giống nhau nhưng khác nhau ở cách lưu trữ và truy xuất dữ liệu từ cơ sở dữ liệu. Bảng sau đây tóm tắt những khác biệt cơ bản giữa kiểu dữ liệu char và varchar