ฉันยังใหม่กับแนวคิดnvarchar(MAX)
นี้ จะจุอักขระได้กี่ตัว
ฉันยังใหม่กับแนวคิดnvarchar(MAX)
นี้ จะจุอักขระได้กี่ตัว
คำตอบ:
สูงสุด ความจุคือพื้นที่ 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 ตัวน้อยกว่า ฉันเคยอ้างสิทธิ์มาก่อน
VARCHAR(MAX)
ถ้าคุณไม่ต้องการการสนับสนุน 2 ไบต์สำหรับภาษาเอเชียอาหรับหรือซิริลลิก ใช้(N)VARCHAR(x)
ถ้าคุณรู้ว่าสตริงจะไม่ยาวเกิน x อักขระ (อย่าใช้NVARCHAR(MAX)
สำหรับชื่อ - ใช้NVARCHAR(50)
หรืออะไรก็ตามที่สมเหตุสมผลสำหรับคุณ)
จากถ่านและ varchar (Transact-SQL)
varchar [(n | สูงสุด)]
ข้อมูลอักขระที่ไม่ใช่ Unicode ที่มีความยาวตัวแปร n สามารถมีค่าตั้งแต่ 1 ถึง 8,000 สูงสุดระบุว่าขนาดพื้นที่จัดเก็บสูงสุดคือ 2 ^ 31-1 ไบต์ ขนาดพื้นที่จัดเก็บคือความยาวจริงของข้อมูลที่ป้อน + 2 ไบต์ ข้อมูลที่ป้อนสามารถมีความยาวได้ 0 อักขระ คำพ้องความหมาย ISO สำหรับ varchar เป็นอักขระที่แตกต่างกันหรืออักขระที่แตกต่างกัน
2 ^ 31-1 ไบต์ ดังนั้นน้อยกว่า 2 ^ 31-1 อักขระเล็กน้อยสำหรับ varchar (สูงสุด) และครึ่งหนึ่งสำหรับ nvarchar (สูงสุด)