อะไรคือความแตกต่างระหว่าง CHARACTER VARYING และ VARCHAR ใน PostgreSQL?


115

จอห์นใช้ในสถานที่ที่ผมใช้CHARACTER VARYING VARCHARฉันเป็นมือใหม่ในขณะที่เขาเป็นผู้เชี่ยวชาญ สิ่งนี้ชี้ให้ฉันเห็นว่ามีบางอย่างที่ฉันไม่รู้

อะไรคือความแตกต่างระหว่าง CHARACTER VARYING และ VARCHAR ใน PostgreSQL?

คำตอบ:


129

Varying เป็นนามแฝงสำหรับ varchar ดังนั้นไม่แตกต่างโปรดดูเอกสารประกอบ :)

สัญกรณ์ varchar (n) และ char (n) เป็นนามแฝงสำหรับอักขระที่แตกต่างกัน (n) และอักขระ (n) ตามลำดับ อักขระที่ไม่มีตัวระบุความยาวจะเทียบเท่ากับอักขระ (1) หากใช้อักขระที่แตกต่างกันโดยไม่มีตัวระบุความยาวประเภทจะยอมรับสตริงที่มีขนาดใดก็ได้ ส่วนหลังเป็นส่วนขยาย PostgreSQL


9
มันเป็นอีกทางหนึ่ง: varchar เป็นนามแฝงสำหรับการเปลี่ยนแปลง อย่าอวดดี แต่มันอยู่ตรงนั้นในคำพูดของคุณ
zerzevul

2
@zerzevul One อาจไม่เห็นด้วยกับเอกสารและเห็นด้วยกับ Charles ที่นี่เนื่องจากvarchar(n)เป็นมาตรฐาน ANSI และไวยากรณ์นี้เป็นเรื่องแปลกสำหรับ PostgreSQL
BobRodes


4

ข้อแตกต่างเพียงอย่างเดียวคือตัวละคร VARYING เป็นมิตรกับมนุษย์มากกว่า VARCHAR


1
@joop ฉันไม่ได้รับสิทธิพิเศษในการสัมผัสกับ COBOL แต่ฉันได้สัมผัสกับภาษาอังกฤษและฉันคิดว่า "VARCH ARe อะไรนะ" :-)
Inor

8
นอกจากนี้ฉันคิดว่ามันทำให้โปรแกรมเมอร์ชั้นนำสับสน;) พวกเขาใช้เพื่อ varchar
manocha_ak

3

ทั้งสองเป็นสิ่งเดียวกัน แต่หลายฐานข้อมูลไม่ได้ให้ถ่านที่แตกต่างกันส่วนใหญ่ postgreSQL ให้ ดังนั้นสำหรับฐานข้อมูลหลายอย่างเช่น Oracle Postgre และ DB2 จึงเป็นการดีที่จะใช้ Varchar


2

คำตอบสั้น ๆ : ไม่มีความแตกต่าง

คำตอบแบบยาว: CHARACTER VARYINGเป็นชื่อประเภทอย่างเป็นทางการจากมาตรฐาน ANSI SQL ซึ่งฐานข้อมูลที่สอดคล้องทั้งหมดจะต้องรองรับ VARCHARเป็นนามแฝงที่สั้นกว่าซึ่งฐานข้อมูลสมัยใหม่ทั้งหมดรองรับเช่นกัน ฉันชอบVARCHARเพราะมันสั้นกว่าและเพราะชื่อที่ยาวขึ้นทำให้รู้สึกอวดดี อย่างไรก็ตามเครื่องมือ postgres ชอบpg_dumpและส่งออกจะ\dcharacter varying

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