ฉันควรใช้การเปรียบเทียบชุดใดในฮีบรูในพระคัมภีร์ไบเบิล?


19

ฉันควรใช้การเปรียบเทียบ SQL Server สำหรับภาษาฮีบรูในพระคัมภีร์ไบเบิลอย่างไร ฐานข้อมูลที่อยู่ระหว่างการพิจารณาจำเป็นต้องมีการกำกับกำกับ (เช่นเสียงสระ, เสียง, เสียงแหลม, ฯลฯ )

คำตอบ:


34

ครั้งแรก:ไม่มีความแตกต่างการเปรียบเทียบอย่างฉลาดระหว่างพระคัมภีร์ไบเบิ้ลฮิบรูและฮิบรูสมัยใหม่ เรากำลังติดต่อกับชาวฮีบรู

ประการที่สอง: คุณต้องการใช้ชุดการเรียงข้อมูลใหม่ล่าสุดซึ่งเป็น _100_ชุดเนื่องจากมีน้ำหนักการเรียงลำดับที่สมบูรณ์และใหม่กว่าและกฎทางภาษาศาสตร์มากกว่าชุดเก่าที่ไม่มีหมายเลขรุ่นในชื่อ (ในทางเทคนิคคือรุ่น80)โดยปกติฉันขอแนะนำให้ใช้รุ่นล่าสุดของการเปรียบเทียบสิ่งที่คุณต้องการ แต่อย่างน้อยในกรณีนี้มีเหตุผลที่ดีที่จะใช้รุ่นที่ไม่มีหมายเลขเวอร์ชันในชื่อ การเปรียบเทียบรุ่น 100 (หรือใหม่กว่า) นั้นสมบูรณ์กว่ามากและสามารถแยกแยะความแตกต่างระหว่างอักขระเสริม (หรือสนับสนุนอย่างเต็มที่หากใช้SCหรือการ140เปรียบเทียบ) แต่สมมติว่าคุณไม่ได้จัดการกับอักขระเสริมดังนั้นรุ่น 80 (ไม่มีรุ่น) การเรียงหมายเลขในชื่อ) จะช่วยให้การจัดการฮีบรูทำได้ดีขึ้น (ดูรายการ "หก" ด้านล่าง)

ประการที่สาม:ไม่มีแนวคิดของ "Kana" (หรือ Kana-type) ในภาษาฮิบรูดังนั้นคุณสามารถเพิกเฉยต่อรูปแบบการเปรียบเทียบใด ๆ ที่มี_KSในชื่อของพวกเขา (เช่นเดียวกับความไวที่คุณจะไม่ใช้)

Forth:การเปรียบเทียบที่ลงท้ายด้วย_SCการสนับสนุนอักขระเพิ่มเติม (เช่นเต็ม UTF-16) ดังนั้นโดยปกติแล้วจะดีที่สุดในการเลือกหนึ่งในนั้นถ้ามี (ความหมาย: ถ้าคุณใช้ SQL Server 2012 หรือใหม่กว่า)

ประการที่ห้า:คุณไม่ต้องการให้มีการเปรียบเทียบไบนารี ( _BINหรือ_BIN2) เนื่องจากไม่สามารถแยกความแตกต่างระหว่างตัวอักษรภาษาฮิบรูที่มีทั้งสระและเครื่องหมาย cantillation ที่เหมือนกัน แต่มีอักขระรวมอยู่ในคำสั่งที่แตกต่างกันและไม่สามารถละเว้นสระและเครื่องหมายอื่น ๆ สิ่งที่ติดลบเหมือนและאאֽ

ตัวอย่างเช่น (สระและเครื่องหมายการรวมตัวอักษรตามลำดับที่ตรงกันข้าม):

SELECT NCHAR(0x05D0) + NCHAR(0x059C) + NCHAR(0x05B8),
       NCHAR(0x05D0) + NCHAR(0x05B8) + NCHAR(0x059C)
WHERE  NCHAR(0x05D0) + NCHAR(0x059C) + NCHAR(0x05B8) =
       NCHAR(0x05D0) + NCHAR(0x05B8) + NCHAR(0x059C) COLLATE Hebrew_100_CS_AS_SC;
-- אָ֜  אָ֜

SELECT NCHAR(0x05D0) + NCHAR(0x059C) + NCHAR(0x05B8),
       NCHAR(0x05D0) + NCHAR(0x05B8) + NCHAR(0x059C)
WHERE  NCHAR(0x05D0) + NCHAR(0x059C) + NCHAR(0x05B8) =
       NCHAR(0x05D0) + NCHAR(0x05B8) + NCHAR(0x059C) COLLATE Hebrew_100_BIN2;
-- no rows

หก:ขึ้นอยู่กับว่าคุณจะโต้ตอบกับค่าสตริงอย่างไร ฮิบรูไม่มีตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก แต่มีจุดรหัสน้อยที่ได้รับผลกระทบจากตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ มีจุดโค้ดสองสามจุดที่ไวต่อความกว้าง สำเนียงที่มีความอ่อนไหว / ตายส่งผลกระทบต่อการออกเสียงสระที่ใช้สำหรับการออกเสียงและcantillationเครื่องหมาย (เช่นเปรียบเทียบ)

  1. คุณต้องการแยกความแตกต่างระหว่างรูปแบบตัวอักษรสุดท้ายและไม่ใช่ตัวสุดท้ายของตัวอักษรเดียวกันหรือไม่? ฮิบรูมีห้าตัวอักษรที่ดูแตกต่างเมื่อใช้เป็นตัวอักษรสุดท้ายของคำ SQL Server จัดการสิ่งนี้ผ่านการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่_CS(แต่น่าเสียดายที่ดูเหมือนว่ามันจะใช้งานไม่ได้ในรุ่นที่ใหม่กว่าและมักจะดีกว่ารุ่น 100 และการเรียงแบบใหม่กว่า):

    SELECT NCHAR(0x05DE) AS [Mem],
           NCHAR(0x05DD) AS [Final Mem]
    WHERE  NCHAR(0x05DE) = NCHAR(0x05DD) COLLATE Hebrew_CI_AS_KS_WS;
    -- 1 row (expected; all sensitive except case)
    -- Mem  Final Mem
    -- ‭מ    ם
    
    
    SELECT NCHAR(0x05DE) AS [Mem],
           NCHAR(0x05DD) AS [Final Mem]
    WHERE  NCHAR(0x05DE) = NCHAR(0x05DD) COLLATE Hebrew_CS_AI;
    -- no rows (expected; all insensitive except case)
    
    
    SELECT NCHAR(0x05DE) AS [Mem],
           NCHAR(0x05DD) AS [Final Mem]
    WHERE  NCHAR(0x05DE) = NCHAR(0x05DD) COLLATE Hebrew_100_CI_AI;
    -- no rows (expected 1 row; all insensitive)
  2. คุณจำเป็นต้องแยกแยะระหว่างเครื่องหมายการออกเสียงสระและเครื่องหมายการออกเสียงหรือไม่? SQL Server จัดการสิ่งนี้ผ่านการเน้นความไว / การ_ASจัดเรียง (แต่น่าเสียดายที่ดูเหมือนว่าจะขาดในรุ่นที่ใหม่กว่าและมักจะดีกว่ารุ่น 100 และใหม่กว่าการเปรียบเทียบ) โปรดทราบว่าทั้งสามสิ่งนี้ถูกจัดกลุ่มเข้าด้วยกันภายใต้สำเนียงและไม่สามารถควบคุมแยกกันได้ (เช่นคุณไม่สามารถออกเสียงเสียงสระได้

    เครื่องหมายการออกเสียง

    มีตัวอักษรหลายตัวที่มีสองเสียงที่แตกต่างกัน บางครั้งตัวบ่งชี้เดียวที่ใช้เสียงคือบริบทของคำที่ตัวอักษรเป็น (และบางครั้งอาจเป็นคำที่อยู่รอบ ๆ ) เช่นในโตราห์ที่แท้จริง (ที่ไม่มีเครื่องหมายหรือสระออกเสียง) แต่ข้อความเดียวกันในรูปแบบอื่น ๆ รวมถึงข้อความอื่น ๆ จะมีจุดที่อยู่ภายในตัวอักษรหรือสำหรับตัวอักษรชินเหนือตัวอักษร ตัวอักษรชินสามารถมีได้ทั้งเสียง "sh" หรือ "s" หากต้องการระบุเสียง "sh" (เช่นตัวอักษร "shin") จะมีจุดด้านบนทางด้านขวาในขณะที่จุดด้านบนทางด้านซ้ายแสดงถึง "s" เสียง (ตัวอักษร "บาป"):

    SELECT NCHAR(0x05E9) AS [Shin],                            -- ש
           NCHAR(0x05E9) + NCHAR(0x05C1) AS [Shin + Shin Dot], -- שׁ
           NCHAR(0x05E9) + NCHAR(0x05C2) AS [Shin + Sin Dot]   -- שׂ
    WHERE  NCHAR(0x05E9) = NCHAR(0x05E9) + NCHAR(0x05C1) COLLATE Hebrew_CS_AI_KS_WS
    AND    NCHAR(0x05E9) = NCHAR(0x05E9) + NCHAR(0x05C2) COLLATE Hebrew_CS_AI_KS_WS;
    -- 1 row (expected; all sensitive except accent)
    
    
    SELECT NCHAR(0x05E9) AS [Shin],                            -- ש
           NCHAR(0x05E9) + NCHAR(0x05C1) AS [Shin + Shin Dot], -- שׁ
           NCHAR(0x05E9) + NCHAR(0x05C2) AS [Shin + Sin Dot]   -- שׂ
    WHERE  NCHAR(0x05E9) = NCHAR(0x05E9) + NCHAR(0x05C1) COLLATE Hebrew_CI_AS
    OR     NCHAR(0x05E9) = NCHAR(0x05E9) + NCHAR(0x05C2) COLLATE Hebrew_CI_AS;
    -- no rows (expected; all insensitive except accent)
    
    
    SELECT NCHAR(0x05E9) AS [Shin],                            -- ש
           NCHAR(0x05E9) + NCHAR(0x05C1) AS [Shin + Shin Dot], -- שׁ
           NCHAR(0x05E9) + NCHAR(0x05C2) AS [Shin + Sin Dot]   -- שׂ
    WHERE  NCHAR(0x05E9) = NCHAR(0x05E9) + NCHAR(0x05C1) COLLATE Hebrew_100_CI_AI_SC
    OR     NCHAR(0x05E9) = NCHAR(0x05E9) + NCHAR(0x05C2) COLLATE Hebrew_100_CI_AI_SC;
    -- no rows (expected 1 row; all insensitive)

    สระ

    SELECT NCHAR(0x05D0) AS [Aleph],                           -- א
           NCHAR(0x05D0) + NCHAR(0x05B8) AS [Aleph with vowel] -- אָ
    WHERE  NCHAR(0x05D0) =
           NCHAR(0x05D0) + NCHAR(0x05B8) COLLATE Hebrew_CS_AI_KS_WS;
    -- 1 row (expected; all sensitive except accent)
    
    
    SELECT NCHAR(0x05D0) AS [Aleph],                           -- א
           NCHAR(0x05D0) + NCHAR(0x05B8) AS [Aleph with vowel] -- אָ
    WHERE  NCHAR(0x05D0) =
           NCHAR(0x05D0) + NCHAR(0x05B8) COLLATE Hebrew_CI_AS;
    -- no rows (expected; all insensitive except accent)
    
    
    SELECT NCHAR(0x05D0) AS [Aleph],                           -- א
           NCHAR(0x05D0) + NCHAR(0x05B8) AS [Aleph with vowel] -- אָ
    WHERE  NCHAR(0x05D0) =
           NCHAR(0x05D0) + NCHAR(0x05B8) COLLATE Hebrew_100_CI_AI_SC;
    -- no rows (expected 1 row; all insensitive)

    เครื่องหมาย Cantilation

    ในทางเทคนิคตามข้อมูล Unicode อย่างเป็นทางการเครื่องหมายฮิบรูฮิลล์นั้นไม่สามารถมองข้ามได้และควรลงทะเบียนเป็นความแตกต่างที่นี่เมื่อใช้การเปรียบเทียบแบบไบนารี อย่างไรก็ตาม SQL Server ปฏิบัติต่อพวกเขาเช่นเดียวกับการเน้นเสียง (น่าเสียดายที่) และไม่สามารถแยกพวกเขาออกจากเครื่องหมายการออกเสียงหรือสระ

    SELECT NCHAR(0x05D0) AS [Aleph],                                       -- א
           NCHAR(0x05D0) + NCHAR(0x05A8) AS [Aleph with cantillation mark] -- א֨
    WHERE  NCHAR(0x05D0) =
           NCHAR(0x05D0) + NCHAR(0x05A8) COLLATE Hebrew_CS_AI_KS_WS;
    -- 1 row (expected; all sensitive except accent)
    
    
    SELECT NCHAR(0x05D0) AS [Aleph],                                       -- א
           NCHAR(0x05D0) + NCHAR(0x05A8) AS [Aleph with cantillation mark] -- א֨
    WHERE  NCHAR(0x05D0) =
           NCHAR(0x05D0) + NCHAR(0x05A8) COLLATE Hebrew_CI_AS;
    -- no rows (expected; all insensitive except accent)
    
    
    SELECT NCHAR(0x05D0) AS [Aleph],                                       -- א
           NCHAR(0x05D0) + NCHAR(0x05A8) AS [Aleph with cantillation mark] -- א֨
    WHERE  NCHAR(0x05D0) =
           NCHAR(0x05D0) + NCHAR(0x05A8) COLLATE Hebrew_100_CI_AI_SC;
    -- no rows (expected 1 row; all insensitive)
  3. คุณจำเป็นต้องแยกแยะระหว่างรูปแบบตัวอักษรแบบกว้างและแบบกว้างหรือไม่? มีแปดตัวอักษรในภาษาฮิบรูที่ยืด (กว้าง) แต่มีวัตถุประสงค์เพื่อใช้ในการเลื่อนโตราห์ (ทั้งเขียนด้วยมือ / จริงหรือพิมพ์) เพื่อรักษารูปแบบคอลัมน์ - ธรรมอย่างเต็มที่ (ซึ่งจริง ๆ แล้วมันปรากฏในม้วนโตราห์ ) SQL Server จัดการสิ่งนี้ผ่านไว - ไว / การ_WSจัดเรียง (น่าสนใจพอดูเหมือนว่าเป็นความไวเพียงอย่างเดียวที่ทำงานได้อย่างถูกต้องในเวอร์ชัน 100 ที่ใหม่กว่าและการจัดเรียงที่ใหม่กว่าแม้ว่าน่าเศร้าที่มีโอกาสน้อยที่สุดที่จะใช้):

    SELECT NCHAR(0x05DC) AS [Lamed],
           NCHAR(0xFB25) AS [Wide Lamed]
    WHERE  NCHAR(0x05DC) = NCHAR(0xFB25) COLLATE Hebrew_CI_AI;
    -- no rows (expected 1 row; all insensitive)
    
    
    SELECT NCHAR(0x05DC) AS [Lamed],
           NCHAR(0xFB25) AS [Wide Lamed]
    WHERE  NCHAR(0x05DC) = NCHAR(0xFB25) COLLATE Hebrew_100_CS_AS_KS_SC;
    -- 1 row (expected; all sensitive except width)
    -- Lamed    Wide Lamed
    -- ‭ל        ﬥ
    
    
    SELECT NCHAR(0x05DC) AS [Lamed],
           NCHAR(0xFB25) AS [Wide Lamed]
    WHERE  NCHAR(0x05DC) = NCHAR(0xFB25) COLLATE Hebrew_100_CI_AI_WS_SC;
    -- no rows (expected; all insensitive except width)

ดังนั้นบางทีHebrew_CI_AIสำหรับคอลัมน์และคุณสามารถแทนที่ต่อการแสดงออก / กริยาผ่านCOLLATEคำสั่งถ้าคุณต้องการที่จะใช้รูปแบบเช่นCOLLATE Hebrew_CS_AIหรือหรือHebrew_CI_ASHebrew_CS_AS

หมายเหตุเพิ่มเติม

  1. คุณจะต้องเก็บข้อมูลในNVARCHARคอลัมน์ / ตัวแปร คุณสามารถทำได้เกือบทั้งหมดใน 8 บิตปกติVARCHARโดยใช้หน้ารหัส Windows-1255 (ซึ่งเป็นสิ่งที่Hebrew_*ใช้ในการเปรียบเทียบ) รวมถึงการรวมอักขระสำหรับสระและจุดออกเสียง:

    ;WITH Hebrew AS
    (
        SELECT NCHAR(0x05E9) + NCHAR(0x05C1) + NCHAR(0x05B8)
               COLLATE Hebrew_100_CS_AS AS [Shin]
    )
    SELECT
      Hebrew.[Shin] AS [Unicode],
      CONVERT(VARCHAR(20), Hebrew.[Shin]) AS [CodePage1255],
      CONVERT(VARBINARY(10), CONVERT(VARCHAR(20), Hebrew.[Shin])) AS [CodePage1255_bytes]
    FROM   Hebrew;
    -- Unicode  CodePage1255    CodePage1255_bytes
    -- שָׁ        שָׁ               F9D1C8
    

    อย่างไรก็ตามเฉพาะบล็อก Unicode Hebrew ที่มีเครื่องหมาย cantillation (เช่น trope; code points U + 0591 ถึง U + 05AF) บวกกับ extras เล็กน้อย (code points U + 05C4 ถึง U + 05C7) และบล็อกแบบ Alph Alph Presentationมีความกว้าง แตกต่างจากตัวอักษรหลายตัวรวมถึงสิ่งอื่น ๆ

  2. โปรดดูมาตรฐาน Unicodeอย่างเป็นทางการ(เวอร์ชั่น 12.1), บทที่ 9: Middle East-I, ส่วน 9.1: ฮิบรู, หน้า 361-366 (389-394 ของ PDF)สำหรับคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีที่ Unicode จัดการกับข้อความภาษาฮิบรู
  3. ตามกฎอย่างเป็นทางการของ Unicode CLDR (การตัดเฉพาะสถานที่เกิดเหตุ) สำหรับวัฒนธรรมฮีบรู ("เขา" และ "he-IL"), U + 05F3 HEBREW PUNCTUATION GERESH ควรตรงหรือมาก่อน , U + 0027 APOSTROPHE โดยปกติ U + 05F3 จะเรียงลำดับหลังจากเครื่องหมายอัญประกาศเดี่ยว พฤติกรรมนี้เห็นได้ชัดเมื่อใช้การสาธิตการเปรียบเทียบ ICUและการสลับระหว่าง "การจัดเรียง" / ลำดับการจัดเรียงมาตรฐาน (ใช้โดย US English / "en-US") และ "เขา" อย่างไรก็ตามพฤติกรรมนี้ดูเหมือนจะไม่สามารถใช้ได้ใน. NET หรือ SQL Server:

    SELECT NCHAR(0x05F3)
    WHERE  NCHAR(0x05F3) <= N'''' COLLATE Hebrew_100_CS_AS_KS_WS;
    -- no rows
    
    SELECT NCHAR(0x05F3)
    WHERE  NCHAR(0x05F3) <= N'''' COLLATE Hebrew_CS_AS_KS_WS;
    -- no rows

    ในขณะที่การละเว้นโชคร้ายมันทำให้รู้สึกว่าฉันไม่เห็น "เขา" หรือ "he-IL" - การปรับแต่งเฉพาะในไฟล์ Windows Weighting Weight Table นี่อาจหมายความว่าไม่มีความแตกต่างที่เกิดขึ้นจริงระหว่างHebrew_*และการLatin1_General_*เปรียบเทียบนอกหน้ารหัสที่เกี่ยวข้องซึ่งใช้สำหรับVARCHARข้อมูลเท่านั้นและไม่ได้ใช้ที่นี่

  4. โปรดดูคำถามและคำตอบที่เกี่ยวข้อง: วิธีการตัดเครื่องหมายเน้นภาษาฮิบรู

OP ตอบกลับด้วย:

ใช่ฉันต้องแยกความแตกต่างระหว่าง: 1) รูปแบบสุดท้ายและที่ไม่ใช่ตัวอักษรสุดท้ายของตัวอักษรเดียวกัน 2) เครื่องหมายการออกเสียง 3) สระและ 4) เครื่องหมายเท้าแขน

ในกรณีดังกล่าวเนื่องจากคุณไม่จำเป็นต้องเพิกเฉยความแตกต่างระหว่างคุณสมบัติเหล่านั้นคุณสามารถใช้การจัดเรียง 100 ระดับ ตัวอย่างด้านล่างแสดงตัวอักษรภาษาฮิบรู (บาป) ที่มีเครื่องหมายการออกเสียงเครื่องหมายการออกเสียงและสระ มีหกเวอร์ชันเพื่อให้สามารถแสดงชุดค่าผสมของอักขระที่รวมกันได้ มีรายการที่เจ็ดที่ใช้จุดอื่นเพื่อสร้างตัวอักษรชินที่มีตัวอักษรฐานเดียวกันสระและเครื่องหมาย cantillation แบบสอบถามแสดงให้เห็นว่ารายการ "บาป" เพียงหกรายการเท่านั้นที่จับคู่กัน

ฉันรวมการใช้งานLatin1_GeneralและการJapanese_XJIS_140เรียงเพื่อแสดงให้เห็นว่ากฎทำงานร่วมกับกฎเหล่านั้นเช่นกันในกรณีที่คุณจำเป็นต้องใช้ประโยชน์ (การ140เปรียบเทียบเฉพาะภาษาญี่ปุ่นมีการแมปตัวพิมพ์ใหญ่และตัวพิมพ์เล็กกว่าเวอร์ชั่นเก่ากว่า) แต่โดยทั่วไปน่าจะดีที่สุดที่จะยึดติดกับการเปรียบเทียบฮีบรูและใช้100เวอร์ชันที่ไม่ใช่ถ้าคุณต้องการละเว้นความแตกต่างในสระเครื่องหมายจุดและรูปแบบสุดท้ายเทียบกับไม่ใช่แบบสุดท้าย

DECLARE @Shin   NVARCHAR(5) = NCHAR(0x05E9), -- base Hebrew letter
        @Dot    NVARCHAR(5) = NCHAR(0x05C2), -- Sin Dot
        @Mark   NVARCHAR(5) = NCHAR(0x05A8), -- Cantillation Mark (i.e. trope)
        @Vowel  NVARCHAR(5) = NCHAR(0x05B8); -- Vowel

DECLARE @Dot_Mark_Vowel NVARCHAR(20) = @Shin + @Dot + @Mark + @Vowel,
        @Dot_Vowel_Mark NVARCHAR(20) = @Shin + @Dot + @Vowel + @Mark,
        @Vowel_Dot_Mark NVARCHAR(20) = @Shin + @Vowel + @Dot + @Mark,
        @Vowel_Mark_Dot NVARCHAR(20) = @Shin + @Vowel + @Mark + @Dot,
        @Mark_Vowel_Dot NVARCHAR(20) = @Shin + @Mark + @Vowel + @Dot,
        @Mark_Dot_Vowel NVARCHAR(20) = @Shin + @Mark + @Dot + @Vowel,
        @ShinDot_Mark_Vowel NVARCHAR(20) = @Shin + NCHAR(0x05C1) + @Mark + @Vowel;

SELECT @Dot_Mark_Vowel AS [Sin], @ShinDot_Mark_Vowel AS [Shin];

;WITH chr AS
(
  SELECT *
  FROM   (VALUES
            (@Dot_Mark_Vowel, 'Dot + Mark + Vowel'),
            (@Dot_Vowel_Mark, 'Dot + Vowel + Mark'),
            (@Vowel_Dot_Mark, 'Vowel + Dot + Mark'),
            (@Vowel_Mark_Dot, 'Vowel + Mark + Dot'),
            (@Mark_Vowel_Dot, 'Mark + Vowel + Dot'),
            (@Mark_Dot_Vowel, 'Mark + Dot + Vowel'),
            (@ShinDot_Mark_Vowel, 'ShinDot + Mark + Vowel')
         ) tmp([Hebrew], [Description])
) SELECT chr1.[Hebrew],
         '--' AS [---],
         chr1.[Description] AS [Description_1],
         CONVERT(VARBINARY(20), RIGHT(chr1.[Hebrew], 3)) AS [Bytes_1],
         '--' AS [---],
         chr2.[Description] AS [Description_2],
         CONVERT(VARBINARY(20), RIGHT(chr2.[Hebrew], 3)) AS [Bytes_2]
  FROM   chr chr1
  CROSS JOIN chr chr2
  WHERE  chr1.[Description] <> chr2.[Description] -- do not compare item to itself
  AND    chr1.[Hebrew] = chr2.[Hebrew] COLLATE Hebrew_100_CS_AS_SC
  AND    chr1.[Hebrew] = chr2.[Hebrew] COLLATE Latin1_General_100_CS_AS_SC
  AND    chr1.[Hebrew] = chr2.[Hebrew] COLLATE Japanese_XJIS_140_CS_AS;

-- this query returns 30 rows

ใช่ฉันต้องแยกความแตกต่างระหว่าง: 1) รูปแบบสุดท้ายและที่ไม่ใช่ตัวอักษรสุดท้ายของตัวอักษรเดียวกัน 2) เครื่องหมายการออกเสียง 3) สระและ 4) เครื่องหมายเท้าแขน
brian12345

1
@ brian12345 ขอบคุณสำหรับการอัพเดท ฉันอัปเดตคำตอบของฉันไปยังที่อยู่เพื่อการชี้แจงในส่วนใหม่ของคำตอบสุดท้าย กรุณาตรวจสอบ
โซโลมอน Rutzky

ขอบคุณโซโลมอน มีประโยชน์มาก
brian12345

8

มันขึ้นอยู่กับหลาย ๆ อย่าง การเรียงลำดับคือการเรียงลำดับการเปรียบเทียบและเพจโค้ดที่ไม่ใช่ยูนิโค้ด

repo นี้มีรายการตัวเลือกที่ดีรอบ ๆ ภาษาฮิบรู

+---------------------------+---------------------------------------------------------------------------------------------------------------------+
| Hebrew_BIN                | Hebrew, binary sort                                                                                                 |
| Hebrew_BIN2               | Hebrew, binary code point comparison sort                                                                           |
| Hebrew_CI_AI              | Hebrew, case-insensitive, accent-insensitive, kanatype-insensitive, width-insensitive                               |
| Hebrew_CI_AI_WS           | Hebrew, case-insensitive, accent-insensitive, kanatype-insensitive, width-sensitive                                 |
| Hebrew_CI_AI_KS           | Hebrew, case-insensitive, accent-insensitive, kanatype-sensitive, width-insensitive                                 |
| Hebrew_CI_AI_KS_WS        | Hebrew, case-insensitive, accent-insensitive, kanatype-sensitive, width-sensitive                                   |
| Hebrew_CI_AS              | Hebrew, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive                                 |
| Hebrew_CI_AS_WS           | Hebrew, case-insensitive, accent-sensitive, kanatype-insensitive, width-sensitive                                   |
| Hebrew_CI_AS_KS           | Hebrew, case-insensitive, accent-sensitive, kanatype-sensitive, width-insensitive                                   |
| Hebrew_CI_AS_KS_WS        | Hebrew, case-insensitive, accent-sensitive, kanatype-sensitive, width-sensitive                                     |
| Hebrew_CS_AI              | Hebrew, case-sensitive, accent-insensitive, kanatype-insensitive, width-insensitive                                 |
| Hebrew_CS_AI_WS           | Hebrew, case-sensitive, accent-insensitive, kanatype-insensitive, width-sensitive                                   |
| Hebrew_CS_AI_KS           | Hebrew, case-sensitive, accent-insensitive, kanatype-sensitive, width-insensitive                                   |
| Hebrew_CS_AI_KS_WS        | Hebrew, case-sensitive, accent-insensitive, kanatype-sensitive, width-sensitive                                     |
| Hebrew_CS_AS              | Hebrew, case-sensitive, accent-sensitive, kanatype-insensitive, width-insensitive                                   |
| Hebrew_CS_AS_WS           | Hebrew, case-sensitive, accent-sensitive, kanatype-insensitive, width-sensitive                                     |
| Hebrew_CS_AS_KS           | Hebrew, case-sensitive, accent-sensitive, kanatype-sensitive, width-insensitive                                     |
| Hebrew_CS_AS_KS_WS        | Hebrew, case-sensitive, accent-sensitive, kanatype-sensitive, width-sensitive                                       |
| Hebrew_100_BIN            | Hebrew-100, binary sort                                                                                             |
| Hebrew_100_BIN2           | Hebrew-100, binary code point comparison sort                                                                       |
| Hebrew_100_CI_AI          | Hebrew-100, case-insensitive, accent-insensitive, kanatype-insensitive, width-insensitive                           |
| Hebrew_100_CI_AI_WS       | Hebrew-100, case-insensitive, accent-insensitive, kanatype-insensitive, width-sensitive                             |
| Hebrew_100_CI_AI_KS       | Hebrew-100, case-insensitive, accent-insensitive, kanatype-sensitive, width-insensitive                             |
| Hebrew_100_CI_AI_KS_WS    | Hebrew-100, case-insensitive, accent-insensitive, kanatype-sensitive, width-sensitive                               |
| Hebrew_100_CI_AS          | Hebrew-100, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive                             |
| Hebrew_100_CI_AS_WS       | Hebrew-100, case-insensitive, accent-sensitive, kanatype-insensitive, width-sensitive                               |
| Hebrew_100_CI_AS_KS       | Hebrew-100, case-insensitive, accent-sensitive, kanatype-sensitive, width-insensitive                               |
| Hebrew_100_CI_AS_KS_WS    | Hebrew-100, case-insensitive, accent-sensitive, kanatype-sensitive, width-sensitive                                 |
| Hebrew_100_CS_AI          | Hebrew-100, case-sensitive, accent-insensitive, kanatype-insensitive, width-insensitive                             |
| Hebrew_100_CS_AI_WS       | Hebrew-100, case-sensitive, accent-insensitive, kanatype-insensitive, width-sensitive                               |
| Hebrew_100_CS_AI_KS       | Hebrew-100, case-sensitive, accent-insensitive, kanatype-sensitive, width-insensitive                               |
| Hebrew_100_CS_AI_KS_WS    | Hebrew-100, case-sensitive, accent-insensitive, kanatype-sensitive, width-sensitive                                 |
| Hebrew_100_CS_AS          | Hebrew-100, case-sensitive, accent-sensitive, kanatype-insensitive, width-insensitive                               |
| Hebrew_100_CS_AS_WS       | Hebrew-100, case-sensitive, accent-sensitive, kanatype-insensitive, width-sensitive                                 |
| Hebrew_100_CS_AS_KS       | Hebrew-100, case-sensitive, accent-sensitive, kanatype-sensitive, width-insensitive                                 |
| Hebrew_100_CS_AS_KS_WS    | Hebrew-100, case-sensitive, accent-sensitive, kanatype-sensitive, width-sensitive                                   |
| Hebrew_100_CI_AI_SC       | Hebrew-100, case-insensitive, accent-insensitive, kanatype-insensitive, width-insensitive, supplementary characters |
| Hebrew_100_CI_AI_WS_SC    | Hebrew-100, case-insensitive, accent-insensitive, kanatype-insensitive, width-sensitive, supplementary characters   |
| Hebrew_100_CI_AI_KS_SC    | Hebrew-100, case-insensitive, accent-insensitive, kanatype-sensitive, width-insensitive, supplementary characters   |
| Hebrew_100_CI_AI_KS_WS_SC | Hebrew-100, case-insensitive, accent-insensitive, kanatype-sensitive, width-sensitive, supplementary characters     |
| Hebrew_100_CI_AS_SC       | Hebrew-100, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive, supplementary characters   |
| Hebrew_100_CI_AS_WS_SC    | Hebrew-100, case-insensitive, accent-sensitive, kanatype-insensitive, width-sensitive, supplementary characters     |
| Hebrew_100_CI_AS_KS_SC    | Hebrew-100, case-insensitive, accent-sensitive, kanatype-sensitive, width-insensitive, supplementary characters     |
| Hebrew_100_CI_AS_KS_WS_SC | Hebrew-100, case-insensitive, accent-sensitive, kanatype-sensitive, width-sensitive, supplementary characters       |
| Hebrew_100_CS_AI_SC       | Hebrew-100, case-sensitive, accent-insensitive, kanatype-insensitive, width-insensitive, supplementary characters   |
| Hebrew_100_CS_AI_WS_SC    | Hebrew-100, case-sensitive, accent-insensitive, kanatype-insensitive, width-sensitive, supplementary characters     |
| Hebrew_100_CS_AI_KS_SC    | Hebrew-100, case-sensitive, accent-insensitive, kanatype-sensitive, width-insensitive, supplementary characters     |
| Hebrew_100_CS_AI_KS_WS_SC | Hebrew-100, case-sensitive, accent-insensitive, kanatype-sensitive, width-sensitive, supplementary characters       |
| Hebrew_100_CS_AS_SC       | Hebrew-100, case-sensitive, accent-sensitive, kanatype-insensitive, width-insensitive, supplementary characters     |
| Hebrew_100_CS_AS_WS_SC    | Hebrew-100, case-sensitive, accent-sensitive, kanatype-insensitive, width-sensitive, supplementary characters       |
| Hebrew_100_CS_AS_KS_SC    | Hebrew-100, case-sensitive, accent-sensitive, kanatype-sensitive, width-insensitive, supplementary characters       |
| Hebrew_100_CS_AS_KS_WS_SC | Hebrew-100, case-sensitive, accent-sensitive, kanatype-sensitive, width-sensitive, supplementary characters         |
+---------------------------+---------------------------------------------------------------------------------------------------------------------+
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.