“ การเปรียบเทียบ” หมายถึงอะไร?


15

ฉันกำลังเรียนรู้ sqlite จากหนังสือที่กล่าวถึงการเรียงและเรียงลำดับหลายครั้ง มันหมายความว่าอย่างไรในโลกของฐานข้อมูล?

คำตอบ:


15

โดยทั่วไปวิธีการเรียงลำดับและเปรียบเทียบสตริง

ตัวอย่าง:

เปรียบเทียบ:

  • เน้นเสียง: à vs äกับ a
  • กรณี: A vs a

เรียงลำดับ:

  • สวีเดน: z -> å -> ä -> ö
  • เดนมาร์ก: z -> æ -> ø -> å

อักขระพิเศษที่เทียบเท่า

  • ภาษาเยอรมันß = ss

วิกิพีเดีย

SQL บางตัว (SQL Server 2008+)

DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')

SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS

1

นิรุกติศาสตร์

"Collation" น่าจะถูกกำหนดไว้อย่างดีที่สุดบน etymology.com

ปลายปี 14c, "การกระทำของการนำมารวมกันและเปรียบเทียบ"

มันไม่ได้เปลี่ยนแปลงเลยในรอบ 600 ปีที่ผ่านมา "เรียง" หมายถึง "เพื่อรวมเข้าด้วยกัน" และไม่ว่าจะเป็นการเรียงลำดับของหนังสือเรียงตามลำดับเวลาหรือในฐานข้อมูลก็เหมือนกันทั้งหมด

วิทยาศาสตร์คอมพิวเตอร์

มันใช้กับวิทยาการคอมพิวเตอร์สิ่งที่เรากำลังทำคือการแยกกลไกการจัดเก็บจากการสั่งซื้อ คุณอาจเคยได้ยินของASCII-betical ที่อ้างถึงการเปรียบเทียบตามการเข้ารหัสไบนารีของอักขระ ASCII ในระบบนั้นการจัดเก็บและการเปรียบเทียบเป็นสองอย่างเดียวกัน หาก"การเข้ารหัส"มาตรฐาน ASCII เคยเปลี่ยน"การเรียง" (ลำดับ) จะเปลี่ยนเช่นกัน

POSIX LC_COLLATEเริ่มที่จะทำลายด้วย แต่เมื่อเราย้ายเข้าสู่ Unicode กลุ่ม บริษัท ก็จะปรากฏตัวเพื่อสร้างมาตรฐานการเปรียบเทียบเช่นกัน: ICU

SQL

ในข้อมูลจำเพาะ SQL มีสองส่วนขยายเพื่อให้การเปรียบเทียบ

  • F690:“ การสนับสนุนการเรียงหน้า:

    รวมcollation name, collation clause, และcollation definitiondrop collation

  • F692: การสนับสนุนการเรียงหน้าแบบขยาย

    รวมการแนบการเรียงหน้าเริ่มต้นอื่นไปยังคอลัมน์ในสคีมา

เป็นหลักสิ่งเหล่านี้ให้ความสามารถในการCREATEและDROPcollations เพื่อระบุสำหรับโอเปอเรเตอร์และเรียงลำดับและเพื่อกำหนดค่าเริ่มต้นสำหรับคอลัมน์

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ SQL เสนอให้ตรวจสอบ

ตัวอย่าง

แทนที่จะวางตัวอย่างที่ จำกัด นี่คือชุดทดสอบ PostgreSQL ซึ่งค่อนข้างกว้างขวาง ลองดูอย่างน้อยลิงค์แรกและมองหา'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"

  • collate.icu.utf8.out
  • collate.linux.utf8.out
  • collate.out อาจจะไม่คุ้มค่าที่จะเช็คเอาท์ แต่ฉันวางมันไว้ที่นี่เพื่อตรวจสอบ POSIX ที่สมบูรณ์และน่าเบื่อ

-2

เรียงลำดับ บัตรที่ถูกเจาะถูกเรียงหน้า เร็กคอร์ดไฟล์แฟล็ตถูกเรียงลำดับแล้ว สิ่งนี้ไม่ซ้ำกับฐานข้อมูล

มันเป็นคำอธิบายตัวเองสำหรับข้อความ แต่สำหรับข้อมูลไบนารีที่เก็บไว้เป็นตัวละครมันอาจเป็นเรื่องยุ่งยาก

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