จำนวนอักขระสูงสุดที่ nvarchar (MAX) จะมีคือเท่าใด


คำตอบ:


155

สูงสุด ความจุคือพื้นที่ 2 กิกะไบต์ดังนั้นคุณกำลังดูอักขระ 2 ไบต์มากกว่า 1 พันล้านตัวที่จะพอดีกับNVARCHAR(MAX)ฟิลด์

เมื่อใช้ตัวเลขที่ละเอียดกว่าของคำตอบอื่น ๆ คุณจะสามารถจัดเก็บได้

(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters

1 billion, 73 million, 741 thousand and 822 characters to be precise

ในNVARCHAR(MAX)คอลัมน์ของคุณ(น่าเสียดายที่อักขระครึ่งสุดท้ายนั้นสูญเปล่า ... )

อัปเดต:ตามที่ @MartinMulder ชี้ให้เห็น: คอลัมน์อักขระที่มีความยาวตัวแปรใด ๆ ก็มีค่าใช้จ่าย 2 ไบต์สำหรับเก็บความยาวจริง - ดังนั้นฉันจึงต้องลบอีกสองไบต์จาก2 ^ 31 - 1ความยาวที่ฉันได้กำหนดไว้ก่อนหน้านี้ - ดังนั้นคุณสามารถจัดเก็บอักขระ Unicode ได้ 1 ตัวน้อยกว่า ฉันเคยอ้างสิทธิ์มาก่อน


1
ว้าว ... ฉันเดาว่าฉันไม่จำเป็นต้องกังวลเกี่ยวกับการตั้งค่ากฎการตรวจสอบขนาดสูงสุดแล้ว ฉันควรระมัดระวังเมื่อฉันใช้ nvarchar (MAX)
quakkels

20
@quakkels: เว้นแต่คุณจะวางแผนที่จะทำสงครามและสันติภาพของ Tolstoi (ประมาณ 3.1 ล้านตัวอักษร) เกือบ 350 เท่า - ไม่คุณไม่ต้องกังวลเรื่องความจุ :-) และเนื่องจากเป็นประเภท VARCHAR / NVARCHAR มันจะ ใช้พื้นที่เท่าที่จำเป็นเสมอ - ไม่ต้องกังวลกับการสูญเสียหรือพื้นที่ที่สงวนไว้โดยไม่จำเป็นอีกด้วย ...
marc_s

2
จริงๆ? เจ๋งมาก คุณไม่ต้องการใช้ nvarchar (MAX) ในกรณีใด
quakkels

5
@quakkels: ใช้VARCHAR(MAX)ถ้าคุณไม่ต้องการการสนับสนุน 2 ไบต์สำหรับภาษาเอเชียอาหรับหรือซิริลลิก ใช้(N)VARCHAR(x)ถ้าคุณรู้ว่าสตริงจะไม่ยาวเกิน x อักขระ (อย่าใช้NVARCHAR(MAX)สำหรับชื่อ - ใช้NVARCHAR(50)หรืออะไรก็ตามที่สมเหตุสมผลสำหรับคุณ)
marc_s

1
ฉันเพิ่งเริ่มตอนเช้าโดยถามคำถามเดียวกันกับฉันและทั้งสองคำตอบของคุณก็ทำให้ฉันยิ้มกว้าง +1.
Matthis Kohli

11

จากถ่านและ varchar (Transact-SQL)

varchar [(n | สูงสุด)]

ข้อมูลอักขระที่ไม่ใช่ Unicode ที่มีความยาวตัวแปร n สามารถมีค่าตั้งแต่ 1 ถึง 8,000 สูงสุดระบุว่าขนาดพื้นที่จัดเก็บสูงสุดคือ 2 ^ 31-1 ไบต์ ขนาดพื้นที่จัดเก็บคือความยาวจริงของข้อมูลที่ป้อน + 2 ไบต์ ข้อมูลที่ป้อนสามารถมีความยาวได้ 0 อักขระ คำพ้องความหมาย ISO สำหรับ varchar เป็นอักขระที่แตกต่างกันหรืออักขระที่แตกต่างกัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.