อะไรคือคำแนะนำทั่วไปเมื่อคุณควรใช้CAST
กับCONVERT
? มีปัญหาเกี่ยวกับประสิทธิภาพใด ๆ ที่เกี่ยวข้องกับการเลือกหนึ่งกับอีกประเด็นหนึ่งหรือไม่? หนึ่งใกล้ ANSI-SQL หรือไม่
อะไรคือคำแนะนำทั่วไปเมื่อคุณควรใช้CAST
กับCONVERT
? มีปัญหาเกี่ยวกับประสิทธิภาพใด ๆ ที่เกี่ยวข้องกับการเลือกหนึ่งกับอีกประเด็นหนึ่งหรือไม่? หนึ่งใกล้ ANSI-SQL หรือไม่
คำตอบ:
CONVERT
เป็นเฉพาะของ SQL Server CAST
คือ ANSI
CONVERT
มีความยืดหยุ่นมากขึ้นในการที่คุณสามารถจัดรูปแบบวันที่และอื่น ๆ นอกจากนั้นพวกเขาจะเหมือนกันมาก CAST
หากคุณไม่สนใจเกี่ยวกับคุณสมบัติการขยายการใช้งาน
แก้ไข:
ตามที่บันทึกไว้โดย @beruic และ @CF ในความคิดเห็นด้านล่างมีความเป็นไปได้ที่จะสูญเสียความแม่นยำเมื่อมีการใช้การแปลงโดยนัย (นั่นคือที่ซึ่งคุณใช้ทั้ง CAST และ CONVERT) สำหรับข้อมูลเพิ่มเติมโปรดดูที่นักแสดงและแปลงและโดยเฉพาะกราฟิกนี้: แผนภูมิ SQL Server Data ประเภท Conversion ด้วยข้อมูลเพิ่มเติมนี้คำแนะนำดั้งเดิมยังคงเหมือนเดิม ใช้นักแสดงเมื่อเป็นไปได้
การแปลงมีพารามิเตอร์สไตล์สำหรับการแปลงสตริงเป็นวันที่
CAST เป็น SQL มาตรฐาน แต่ CONVERT ใช้สำหรับภาษา T-SQL เท่านั้น เรามีข้อได้เปรียบเล็กน้อยสำหรับการแปลงในกรณีของวันที่และเวลา
ด้วย CAST คุณจะระบุนิพจน์และประเภทเป้าหมาย ด้วย CONVERT มีอาร์กิวเมนต์ที่สามที่แสดงถึงสไตล์ของการแปลงซึ่งรองรับการแปลงบางอย่างเช่นระหว่างสตริงอักขระและค่าวันที่และเวลา ตัวอย่างเช่น CONVERT (DATE, '1/2/2012', 101) แปลงสตริงอักขระตัวอักษรเป็น DATE โดยใช้สไตล์ 101 ซึ่งเป็นตัวแทนของมาตรฐานสหรัฐอเมริกา
เพื่อขยายคำตอบที่คัดลอกโดย Shaktiฉันสามารถวัดความแตกต่างระหว่างทั้งสองฟังก์ชั่นได้
ฉันถูกทดสอบประสิทธิภาพของรูปแบบของการแก้ปัญหาให้กับคำถามนี้และพบว่าส่วนเบี่ยงเบนมาตรฐานและสูงสุด runtimes CAST
มีขนาดใหญ่เมื่อใช้
* เวลาเป็นมิลลิวินาทีปัดเศษเป็น 1 / 300th ของวินาทีตามค่าความแม่นยำของDateTime
ประเภท
บางสิ่งบางอย่างที่ไม่มีใครสังเกตเห็นได้ยังสามารถอ่านได้ มี ...
CONVERT(SomeType,
SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
)
... อาจเข้าใจง่ายกว่า ...
CAST(SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
AS SomeType
)
CAST(Column1 AS int)
มีเหตุผลมากกว่าที่จะอ่านมากกว่าCONVERT(int, Column1)
สำหรับการแสดงออกที่ยาว
นักแสดงใช้มาตรฐาน ANSI ในกรณีของการพกพาสิ่งนี้จะทำงานบนแพลตฟอร์มอื่น ๆ แปลงเฉพาะเซิร์ฟเวอร์ sql แต่ฟังก์ชั่นที่แข็งแกร่งมาก คุณสามารถระบุสไตล์ที่แตกต่างสำหรับวันที่