TL; DR
ไม่มีสิ่งใดในมุมมอง "ผู้ขายผู้ไม่เชื่อเรื่องพระเจ้า" ของ Collations หรือแม้แต่ "ผู้ไม่เชื่อเรื่องพระเจ้ารุ่น" เนื่องจากการใช้งานของพวกเขา - รวมถึงด้านที่สามารถทำให้ตายและแผนการตั้งชื่อของพวกเขา - เฉพาะผู้ขายและเปลี่ยนแปลงตลอดเวลา .
นี่คือบทสรุปของสิ่งที่ฉันได้พบและรายละเอียดอยู่ในส่วนที่ยาวกว่าด้านล่างบรรทัด:
RDBMS Naming- Combinations Case-Sensitive and
convention of options? Accent-Insensitive support?
------- ------------ ------------- -----
SQL Server _CS, _AI, etc Yes Latin1_General_100_CS_AI
DB2 _E{x}, _S{y}, etc Yes CLDR181_EO_S1
PostgreSQL locale: en_US N/A unaccent(), not via Collation
MySQL _cs, maybe _ai No No: _cs implies _as & _ci implies _ai
Yes? Create your own Collation :-)
Oracle only _CI & _AI No No: _AI always implies _CI
SAP ASE arbitrary: turdict N/A No: "AI" always implies "CI"
Informix locale.codepage N/A No: no "AI" via Collations
ที่คุณสามารถดูในแผนภูมิสองในเจ็ด RDBMSs ทำสนับสนุนโดยกำเนิด "เป็นกรณี ๆ ไปและการดำเนินงานสำเนียงตาย" ผ่าน Collations แม้ว่าพวกเขาจะมีการตั้งชื่อที่แตกต่างกัน (และอีกหลายความแตกต่างของการทำงานอื่น ๆ )
One RDBMS - PostgreSQL - ไม่สนับสนุนชุดค่าผสมนี้ แต่คุณยังสามารถทำได้โดยการตัดสำเนียงด้วยunaccent()
ฟังก์ชั่นเสริม
RDBMSs สี่อันสุดท้ายซึ่งสองอันมีหลักการตั้งชื่อที่คล้ายกันสำหรับตัวเลือกไม่สนับสนุนการรวมกันนี้โดยธรรมชาติหรือมีวิธีการทำสิ่งนี้ให้สำเร็จโดยไม่ต้องเขียนฟังก์ชันของคุณเองเพื่อลบเครื่องหมายเน้นเสียง / การออกเสียง MySQL อนุญาตให้สร้าง Collations ของคุณเอง แต่คุณต้องเพิ่มมันเข้าไปในการควบคุมซอร์สและรวมเข้ากับกระบวนการทดสอบและการปรับใช้เพื่อให้สามารถใช้กับเซิร์ฟเวอร์ทั้งหมดในทุกสภาพแวดล้อม (แต่ก็ยังเป็นตัวเลือกที่เจ๋งและยืดหยุ่นมาก) . SAP ASE กล่าวว่า SAP สามารถจัดหาคำสั่งการเรียงลำดับ Unicode เพิ่มเติม แต่ไม่พูดถึงสิ่งที่พวกเขาอาจเต็มใจที่จะจัดหา
เกี่ยวกับ:
มีเหตุผลที่ดีสำหรับสิ่งนี้หรือเป็นเพียงกรณีการใช้งานที่หายาก?
ฉันสามารถพูดได้ว่าในการทำวิจัยสำหรับคำตอบนี้ฉันเจอผู้คนจำนวนมากที่ต้องการตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ - เล็กสำหรับ MySQL แต่มีน้อยคนที่ถามหาชุดค่าผสมที่คุณต้องการ
ฉันต้องการเงื่อนไขการค้นหาที่จะใช้การเปรียบเทียบที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่ไม่เน้นเสียง แต่ไม่สามารถหาได้
...
คำถามนี้คือผู้ขาย / รุ่นที่ไม่เชื่อเรื่องพระเจ้า
คุณไม่ประสบความสำเร็จในการค้นหาของคุณเพราะไม่เหมาะสมที่จะมองหา RDBMS ตามข้อกำหนดการจัดเรียง นั่นไม่ใช่วิธีการทำงานของ Collations และในขณะที่คุณต้องการที่จะเข้าถึงสิ่งนี้ในฐานะผู้ไม่เชื่อเรื่องพระเจ้าผู้ผลิตความจริงก็คือการเรียงอย่างน้อยส่วนที่เราโต้ตอบด้วยนั้นเป็นเรื่องเฉพาะของผู้จำหน่ายมากและไม่เหมาะกับรูปแบบที่คุณค้นหาอยู่เสมอ .
การเปรียบเทียบสตริงและการเรียงลำดับมีความซับซ้อนสูงและมีวิธีต่าง ๆ ในการปฏิบัติตามกฎเหล่านี้ วิธีหนึ่งคือการมีการแมปที่คำนึงถึงกฎอย่างน้อยหนึ่งกฎ ดังนั้นการรวมกันของ Sensitive และ Insensitive ทั้งสี่สำหรับ Case และ Accent จะเท่ากับการแมปสี่แบบที่แยกกัน ตัวอย่างเช่นคุณเห็นเกี่ยวกับเรื่องนี้ว่าหน้า MSDN สำหรับSQL Server เปรียบเทียบชื่อ Sort Order ID
หากเลื่อนลงคุณจะเห็นว่าคอลัมน์ด้านซ้ายของแผนภูมิเป็น แต่ละการเรียงมี ID ที่แตกต่าง: SQL_Latin1_General_Cp1_CI_AS
= 52 ในขณะที่SQL_Latin1_General_Cp1_CS_AS
= 51 แม้ว่าความแตกต่างเพียงอย่างเดียวคือในกรณีที่ความไว
หรืออาจเป็นไปตามกฎเช่น Unicode ให้บริการผ่านขั้นตอนวิธีการจัดเรียง Unicode (UCA) ในวิธีการนี้ทุกตัวละครจะได้รับน้ำหนักตั้งแต่หนึ่งน้ำหนักขึ้นไป จากนั้นแต่ละวัฒนธรรม / สถานที่มีตัวเลือกเพื่อแทนที่น้ำหนักใด ๆ เหล่านั้นหรือลบกฎหรือเพิ่มกฎ อัลกอริทึมคำนึงถึงกฎเฉพาะโลแคลและจากนั้นอาจจัดการกับน้ำหนักเหล่านั้นตามตัวเลือกที่เลือก (ความไวซึ่งกรณีนี้มาก่อนเมื่อทำการเรียงลำดับตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ฯลฯ ) นี่คือเหตุผลหนึ่งว่าทำไมการจัดเรียง Unicode ช้ากว่าการเรียงลำดับที่ไม่ใช่ Unicode เล็กน้อย
เพื่อให้เข้าใจถึงจำนวนตัวเลือกที่มี (เช่นความซับซ้อนที่แท้จริง) ให้ตรวจสอบการสาธิตนี้จากโครงการ ICU (International Components for Unicode):
ICU Collation Demo
มี 8 ตัวเลือกที่แยกต่างหากเพื่อระบุมีและบางส่วนของพวกเขาได้รับการแสดงในหลายองค์ประกอบของสเปคชื่อเรียงว่าคุณมีความคิดของ (เช่นCS
, CI
, AS
, AI
ฯลฯ ) กำหนดว่ามีรูปแบบจำนวนเท่าใดการใช้วิธีการแมปไฟล์ที่ชุดค่าผสมแต่ละชุดมี ID ของตัวเองจะส่งผลให้มีไฟล์หลายพันไฟล์ ไฟล์เหล่านั้นจำนวนมากจะต้องได้รับการอัปเดตทุกครั้งที่มีการเปลี่ยนแปลงในภาษานั้น ๆ หรือเมื่อพบข้อบกพร่อง นี่อาจเป็นสาเหตุที่มีเพียง 75 ประเภทการเปรียบเทียบใน SQL Server 2012 (เช่นที่มีชื่อขึ้นต้นด้วยSQL_
) _CS_AI
ดังนั้นการรวมกันไม่มี
และสาเหตุที่คุณไม่พบชุดค่าผสมสำหรับ Collations ที่ใช้ UCA มี 3810 Collations ใน SQL Server 2012 ที่ไม่ได้ขึ้นต้นด้วยSQL_
ดังนั้น 3885 Collations จึงมีทั้งหมด รายการนั้นดูเหมือนจะยาวเกินไปที่จะระบุอย่างสมบูรณ์บนหน้าเว็บ แต่นี่ไม่ได้อธิบายอย่างสมบูรณ์ว่าทำไมคุณไม่พบชุดค่าผสมนี้สำหรับผู้ขายรายอื่น
นอกเหนือจากที่กล่าวถึงแล้ว (เช่นชุดค่าผสมที่จะใช้มากเกินไปและรายการการนำไปใช้งานมากเกินไป) คุณยังต้องต่อสู้กับการใช้งานเฉพาะของผู้ขาย ความหมาย: ไม่ใช่ผู้ขายทั้งหมดที่อนุญาตให้ปรับตัวเลือกทั้งหมดเหล่านั้นและไม่มีแบบแผนการตั้งชื่อมาตรฐานสำหรับการเรียงในตอนแรก นอกจากนี้ผู้ขายบางรายเท่านั้นที่ดูตัวเลือกการเรียงลำดับว่าเป็นส่วนหนึ่งของ Collation: การเรียง PostgreSQL เป็นการเรียงลำดับเริ่มต้นสำหรับโลแคลที่เลือกและคุณต้องใช้ILIKE
เพื่อรับการเปรียบเทียบแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดูด้านล่างสำหรับข้อมูลเฉพาะของผู้ขาย
เซิร์ฟเวอร์ SQL (Microsoft)
ความแตกต่างระหว่างสิ่งที่คุณเห็นบนหน้าเอกสารทั้งสองของ MSDN และข้อความค้นหาที่ @MartinSmith จัดหาให้ในความคิดเห็นเกี่ยวกับคำถาม (แก้ไขเล็กน้อยด้านล่าง):
SELECT *
FROM sys.fn_helpcollations()
WHERE [name] LIKE '%[_]CS[_]AI%';
คือเพจ MSDN ทั้งสองนั้นอ้างถึงการเปรียบเทียบ SQL Server ที่คัดค้านโดยเฉพาะอย่างยิ่งในขณะที่การเปรียบเทียบที่ปรากฏขึ้นเป็นผลมาจากการสืบค้นนั้น (888 ในนั้นเป็น SQL Server 2012, SP3) คือการเปรียบเทียบของ Windows
เริ่มต้นใน SQL Server 2000, SQL Server Collation ที่เก่ากว่า (สร้างขึ้นก่อน SQL Server ที่สามารถแตะเข้าไปใน Windows Collations) เลิกใช้แล้วและไม่ได้รับการอัพเดตด้วยกฎหรือฟังก์ชั่นใหม่ ตัวอย่างเช่นการเริ่มต้นใน SQL Server 2012 ชุดของการเปรียบเทียบถูกเพิ่มเข้ามาที่สนับสนุนการจัดการที่เหมาะสมของฟังก์ชั่นในตัวสำหรับอักขระเสริม (เช่นตัวอักษร UTF-16 ที่เหลือเกินกว่าตัวอักษร "ฐาน" 65,536 ตัวแรกที่กำหนดใน UCS-2 ) Collation ที่ใหม่กว่าเหล่านี้ลงท้ายด้วย_SC
(เช่นเดียวกับS h อุปกรณc เสริม )
ที่ดีที่สุดคือไม่ได้ใช้เซิร์ฟเวอร์ SQL Collations - SQL_
ผู้ที่มีชื่อขึ้นต้นด้วย ดังนั้นคุณสามารถเข้าถึง Collations มากมายที่สนับสนุนการรวมกันของตัวเลือกที่คุณกำลังมองหา (เช่น Case-Sensitive และ Accent-Insensitive) เมื่อใดก็ตามที่มีก็เป็นการดีที่สุดที่จะใช้ปลายด้านหนึ่ง_SC
ตราบใดที่มีตัวเลือกอื่น ๆ ทั้งหมดที่คุณต้องการ
ในขณะที่ SQL Server ใช้หลักการ_CS_AI
ตั้งชื่อไม่มีรายการของ 3810 ทั้งหมด (เป็นของ SQL Server 2012) Windows Collations มีเพียงหน้าชื่อคอลเลคชั่นของWindowsที่แสดงรายการตำแหน่งที่ตั้งและรุ่นทั้งหมดและวิธีการทำงานของการตั้งชื่อ
SQL Server ยังรองรับการสลับทั้งความไวและความไว Kana
MySQL (ซื้อโดย Oracle)
รุ่น MySQL 5.7 เอกสารระบุว่ามันไม่สนับสนุน_ai
, _as
, _ci
และ_cs
ต่อท้าย (และ_bin
เพื่อความสมบูรณ์) แต่ยังระบุ:
สำหรับชื่อการเปรียบเทียบแบบไม่ใช่ไบนารีที่ไม่ได้ระบุความไวของสำเนียงจะถูกกำหนดโดยความไวของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ นั่นคือถ้าชื่อเรียงไม่ได้มี_ai
หรือ_as
, _ci
ในชื่อที่มีความหมาย_ai
และในชื่อที่แสดงถึง _cs
_as
ตัวอย่างเช่นlatin1_general_ci
เป็นตัวพิมพ์เล็กและตัวพิมพ์เล็กและตัวพิมพ์ใหญ่latin1_general_cs
และเล็ก
สิ่งนี้บ่งบอกว่าเป็นไปได้ที่จะมีการlatin1_general_cs_ai
เปรียบเทียบ อย่างไรก็ตามเซิร์ฟเวอร์ MySQL 5.5.50 ว่าฉันมีการเข้าถึงไม่ได้เรียงใด ๆ ที่มีมากกว่าหนึ่งต่อท้ายและส่วนต่อท้ายเดียวที่ฉันเห็นคือ: _cs
, _ci
และ_bin
ข้าม 198 Collations ทั้งหมด ฉันใช้คำสั่งSHOW COLLATIONเพื่อแสดงรายการ
ดังนั้นในขณะที่ฟังดูเหมือนว่า MySQL ใช้หลักการตั้งชื่อที่คล้ายกัน (อย่างน้อยที่สุดเท่าที่สองตัวเลือกไป) ฉันไม่สามารถหา Collation ที่ตรงกับสิ่งที่คุณต้องการได้ อย่างไรก็ตามอาจเป็นไปได้ที่จะตัดเครื่องหมายเน้นเสียง (และเครื่องหมายกำกับออกเสียงอื่น ๆ ) และใช้การ_cs
เปรียบเทียบเพื่อให้ได้สิ่งที่คุณต้องการ (คล้ายกับวิธีที่คุณทำใน PostgreSQL - ดูด้านล่าง) แต่ฉันไม่แน่ใจเกี่ยวกับตัวเลือกนี้และไม่มีเวลาทำการวิจัยเพิ่มเติม
หรือคุณอาจสร้าง Collation ของคุณเองเพื่อทำสิ่งที่คุณต้องการ แตกต่างจาก RDBMS อื่น ๆ , MySQL ดูเหมือนจะค่อนข้างง่ายในการเพิ่ม Collations ของคุณเอง, ซึ่งในกรณีนี้คุณสามารถควบคุมน้ำหนักของตัวละครแต่ละตัวได้อย่างเต็มที่ โปรดดูการเพิ่มการจัดเรียงอย่างง่ายในชุดอักขระ 8 บิตและการเพิ่มการจัดเรียง UCA ให้กับชุดอักขระ Unicodeสำหรับรายละเอียดเพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ MySQL จัดการกับการเรียงประเภทต่าง ๆ โปรดดูที่หน้าประเภทการใช้การเรียงหน้า
PostgreSQL
การเรียงข้อมูลใน PostgreSQL นั้นมีความยืดหยุ่นน้อยกว่ามาก คุณระบุเฉพาะวัฒนธรรม / สถานที่: en_US
, de_DE
ฯลฯ โปรดดูหน้าเอกสารประกอบของพวกเขาสำหรับการสนับสนุนการจัดเรียงสำหรับรายละเอียด ดังนั้นโดยค่าเริ่มต้นคุณจะได้รับการแทนที่เฉพาะวัฒนธรรม แต่การจัดเรียงจะเป็นอย่างอื่นทุกอย่างที่ละเอียดอ่อน (ซึ่งโดยวิธีการจะไม่เหมือนกับการเปรียบเทียบ "ไบนารี")
คุณสามารถใช้ILIKE (ส่วน 9.7.1) เพื่อรับความรู้สึกตัวพิมพ์เล็กและตัวพิมพ์เล็ก แต่ไม่มีตัวดำเนินการที่คล้ายกันสำหรับการเน้นความไว แต่ผมพบว่าพวกเขาทำมีunaccentฟังก์ชั่นที่สามารถใช้ในการตัดออกสำเนียงและการออกเสียงวรรณยุกต์อื่น ๆ โปรดทราบว่าฟังก์ชั่นนี้เป็นโมดูลเพิ่มเติมที่ให้มาด้วยเหตุนี้จึงไม่จำเป็นต้องอยู่ในเซิร์ฟเวอร์ PostgreSQL ใด ๆ โดยเฉพาะเพื่อใช้งาน เอกสารประกอบที่เชื่อมโยงล่าสุดระบุว่า:
เมื่อสร้างจากการกระจายแหล่งที่มาส่วนประกอบเหล่านี้จะไม่ถูกสร้างขึ้นโดยอัตโนมัติเว้นแต่คุณจะสร้างเป้าหมาย "โลก"
...
หากคุณใช้ PostgreSQL รุ่นที่จัดทำแพ็กเกจไว้ล่วงหน้าโดยทั่วไปโมดูลเหล่านี้จะทำให้พร้อมใช้งานเป็นแพ็คเกจย่อยแยกต่างหากเช่น PostgreSQL-contrib
โปรดดูเอกสารประกอบสำหรับคำแนะนำเกี่ยวกับวิธีการใช้ฟังก์ชั่นนั้นถ้าคุณไม่มีและต้องการ
ข้อมูลเพิ่มเติมสามารถพบได้ในคำตอบ Stack Overflow ต่อไปนี้:
PostgreSQL รองรับ "การเน้นเสียงที่ไม่ตอบสนอง" หรือไม่?
DB2 (IBM)
คล้ายกับ Microsoft SQL Server, DB2 มีการเปรียบเทียบสองประเภท:
"ระบบ" Collations SYSTEM_{codepage}_[optional-territory]
ซึ่งมีการระบุโดยใช้รูปแบบต่อไปนี้: สิ่งเหล่านี้ไม่ยืดหยุ่นมากและดูเหมือนจะไม่สนับสนุนการปรับความไวของตัวพิมพ์เล็กและตัวเล็กหรือเสียงใด ๆ คุณสามารถค้นหารายการ Collations ที่สนับสนุนได้ที่นี่: รหัสอาณาเขตและหน้ารหัสที่รองรับ
Unicode Collation Algorithm (UCA) - การเปรียบเทียบการอ้างอิง สิ่งเหล่านี้สนับสนุนการปรับแต่งเล็กน้อย โปรดดูหน้าการจัดเรียงตามอัลกอริทึม Unicode Collationของพวกเขาสำหรับรายละเอียดเกี่ยวกับวิธีกำหนดค่าลักษณะการทำงานการตั้งชื่อและรายการสถานที่ที่ถูกต้อง โปรดทราบว่าในตารางที่ 1 ตัวอย่างในแถวที่สาม ("ระดับกรณี") เริ่มต้นด้วย:
การตั้งค่าแอตทริบิวต์ Case Level เป็น on และแอตทริบิวต์ Strength เป็นระดับหลักจะไม่เน้นเครื่องหมายเน้นเสียง แต่ไม่ใช่ตัวพิมพ์ใหญ่และเล็ก
นั่นคือสิ่งที่คุณกำลังมองหา CLDR181_EO_S1
แต่ไวยากรณ์สำหรับที่อยู่:
และนี่คือสาเหตุที่การค้นหาของคุณไม่พบสิ่งใดที่เกี่ยวข้องกับ DB2
คำพยากรณ์
Oracle 10g เพิ่มการสนับสนุนสำหรับการเปรียบเทียบและการเรียงลำดับแบบเน้นข้อความ อย่างไรก็ตาม:
- พวกเขามีตัวเลือกเพื่อแสดงการดำเนินงาน "ตาย":
_CI
และ_AI
- คุณสามารถระบุได้เพียงหนึ่งตัวเลือกเท่านั้นในแต่ละครั้ง
- ตัวเลือกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ -
_CI
- ยังคงเน้นความสำคัญ
- ตัวเลือกสำเนียงที่ไม่รู้สึกตัว -
_AI
- "เป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เสมอ" (อ้างจากเอกสารของพวกเขาซึ่งมีลิงค์ด้านล่าง)
โปรดดูหน้าเอกสารการเรียงลำดับและการค้นหาสตริงสำหรับรายละเอียดและตัวอย่างเพิ่มเติม
SAP ASE (เดิมชื่อ Sybase ASE, aka Sybase)
ASE สนับสนุนการรวมกันของความไวต่อไปนี้อย่างน้อยหนึ่งรายการต่อแต่ละโลแคล / ชุดอักขระ:
- ตรงตามตัวพิมพ์ใหญ่ - เล็กและเน้นเสียง
- ตรงตามตัวพิมพ์ใหญ่ - เล็ก
- ตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์ใหญ่ - เล็ก
- ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
คุณสามารถเห็นความสัมพันธ์ระหว่างสถานชุดตัวอักษรและคำสั่งซื้อการจัดเรียงที่มีอยู่บนของพวกเขาเลือกเริ่มต้นเรียงหน้า และคุณสามารถดูรายการเต็มรูปแบบของพวกเขาใน Collations ชื่อและรหัส Collationหน้า
รูปแบบการตั้งชื่อ Collation ของพวกเขาเป็นกฎเกณฑ์ว่าพวกเขามีอักขระ 4 - 8 ตัวและพยายามจับชื่อโลแคลหรือหน้ารหัสและความรู้สึกของการเรียงลำดับ ตัวอย่างเช่น:
altnoacc
== "ทางเลือก CP 850 - ไม่มีการเน้นเสียง"
rusdict
== "การสั่งซื้อพจนานุกรมภาษารัสเซีย"
dynix
== "การสั่งการออกเสียงภาษาจีน"
มีหมายเหตุเกี่ยวกับการเลือกหน้าเรียงลำดับ Unicode เริ่มต้นที่ระบุ:
คุณสามารถเพิ่มการเรียงลำดับโดยใช้ไฟล์ภายนอกใน$/collate/Unicode
ไดเรกทอรี syscharsets
ชื่อและรหัสการเปรียบเทียบจะถูกเก็บไว้ใน ชื่อของคำสั่งการเรียงลำดับ Unicode ภายนอกไม่จำเป็นต้องอยู่ในsyscharsets
ก่อนที่คุณจะสามารถตั้งค่าการเรียงลำดับ Unicode เริ่มต้นได้
...
คำสั่งการเรียงลำดับ Unicode ภายนอกจัดทำโดย SAP อย่าพยายามสร้างคำสั่งการเรียงลำดับ Unicode ภายนอก
ไม่ชัดเจนว่า SAP จะจัดหาคำสั่งการจัดเรียงภายนอกเพื่ออนุญาตให้ใช้ Case-Sensitive และ Accent-Insensitive หรือไม่ บางทีสักวันหนึ่งฉันจะส่งอีเมลถึงพวกเขาและถามว่าจะมีใครได้รับการร้องขอหรือไม่
เพื่อให้ได้ชุดที่ต้องการความไวคุณควรจะสามารถสร้างฟังก์ชันที่ผู้ใช้กำหนดแบบสเกลาร์เพื่อตัดการเน้นเสียงและเครื่องหมายกำกับออกเสียงอื่น ๆ
Informix (ซื้อโดย IBM)
Informix ดูเหมือนจะสนับสนุนการเรียงลำดับเริ่มต้นและพฤติกรรมการเปรียบเทียบของ Collation เป็นส่วนใหญ่เท่านั้น ดังนั้นการเรียงหน้าเป็นเพียงโลแคลและชุดอักขระ การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นถูกจัดการในระดับฐานข้อมูล คุณสามารถตั้งค่าฐานข้อมูล (ไม่ใช่ตารางหรือคอลัมน์หรือแบบสอบถามหรือแม้แต่เพรดิเคต) เป็นแบบไม่ตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็กโดยระบุ NLSCASE INSENSITIVEในCREATE DATABASE
คำสั่ง
ในขณะที่การจัดเรียงฐานข้อมูล - โลแคลและชุดอักขระ - สามารถถูกเขียนทับต่อการเชื่อมต่อไคลเอนต์ดูเหมือนจะไม่มีวิธีการแทนที่การตั้งค่า case-sensitive และNLSCASE
ตัวเลือกมี "NLS" ในชื่อด้วยเหตุผล: มันมีผลNCHAR
กับNVARCHAR
ข้อมูลเท่านั้น CHAR
และVARCHAR
คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เสมอ
ไม่เน้นความไวของสำเนียงและไม่มีฟังก์ชั่นในตัวเพื่อตัดเครื่องหมายเน้นเสียง / เครื่องหมายกำกับเสียง
ระเบียบการตั้งชื่อ Informix Collation คือ:
<lang>_<country>.<code set>
ที่อยู่:
<lang>
= รหัสภาษา 2 ตัวอักษรหรือ 3 ตัวอักษร
<country>
= รหัสประเทศหรือภูมิภาค 2 ตัวอักษร
<code set>
= หน้ารหัสที่ระบุในหนึ่งใน 3 วิธีที่เทียบเท่าดังต่อไปนี้:
- ชื่อ: 8859-1
- ค่าทศนิยมของหมายเลข IBM CCSID: 819
- ค่าเลขฐานสิบหกของหมายเลข IBM CCSID: 0333
ดังนั้นข้อมูลจำเพาะโลแคลสามตัวต่อไปนี้ทั้งหมดอ้างถึงโลแคลเดียวกันทั้งหมด:
- fr_fr.8859-1
- fr_fr.819
- fr_fr.0333
สำหรับข้อมูลเพิ่มเติมโปรดดู: