เรียงลำดับตามคอลัมน์โดยภาษาฮิบรูมากกว่าภาษาอังกฤษในแบบสอบถาม mysql

ตารางของฉันมีคอลัมน์ item_name ที่มีค่าตัวอย่างเหล่านี้:

abba, babba, ארץ, חלב, כלב

นั่นคือค่าภาษาอังกฤษและค่าภาษาฮิบรู ฉันต้องการแบบสอบถาม mysql ที่จะให้ผลลัพธ์เรียงตามค่าภาษาฮิบรูก่อน (เรียงตามตัวอักษรภาษาฮิบรู) - จากนั้นให้ค่าภาษาอังกฤษ (เรียงตามตัวอักษรภาษาอังกฤษ)

นี่คือสิ่งที่ฉันใช้ตอนนี้:

select id, item_name order by item_name

และมันให้ค่าภาษาอังกฤษแก่ฉันก่อน

การใช้ UNION เป็นไปได้โดยใช้ REGEXP...


person john_black    schedule 17.02.2015    source แหล่งที่มา
comment
สตริงเป็นภาษาอังกฤษหรือฮีบรูเสมอ - ดังนั้นจึงไม่เคยผสมทั้งสองอย่างเลยใช่ไหม การโพสต์ sqlfiddle อาจช่วยได้ - สมมติว่าสามารถใช้อักขระหลายไบต์ได้   -  person Strawberry    schedule 17.02.2015
comment
เพียงใช้ ORDER BY item_name และเพิ่ม DESC หรือ ASC DESC ควรให้ภาษาฮิบรูแก่คุณก่อน ฉันควรทราบว่าไม่แนะนำให้ใส่ค่าภาษาฮิบรูและภาษาอังกฤษในคอลัมน์เดียวกัน בגלל העימוד   -  person No Idea For Name    schedule 17.02.2015


คำตอบ (2)


คุณสามารถใช้คำสั่ง DESC หรือ ASC ได้ ลองเลือก id, ลำดับ item_name ตาม item_name DESC เลือก id, ลำดับ item_name ตาม item_name ASC

person nikolay    schedule 17.02.2015
comment
ไม่ เพิ่ม DESC หรือ ASC จะไม่ทำ มันจะได้ภาษาฮิบรูก่อน แต่อย่างที่บอกไปแล้วว่าต้องเรียงตามตัวอักษรภาษาฮิบรู และหลังจากที่เรียงลำดับตัวอักษรแล้ว ฉันต้องการให้ภาษาอังกฤษเรียงลำดับตามตัวอักษร การเพิ่ม ASC หรือ DESC เพียงกลับลำดับเริ่มต้น - person john_black; 17.02.2015

คำที่คุณกำลังมองหาคือ collation การจัดเรียงเป็นคุณสมบัติที่กำหนดลำดับการเรียงลำดับ ดังที่คุณได้พบแล้ว การจัดเรียงที่ MySQL จัดส่งด้วยอักขระ ASCII การเรียงลำดับทั้งหมดก่อนอักขระที่ไม่ใช่ ASCII วิธีเดียวที่จะจัดการสิ่งนั้นได้คือสร้างการเทียบเคียงของคุณเอง ซึ่งไม่ใช่เรื่องเล็กน้อย

นอกจากนี้ ตรงกันข้ามกับความคิดเห็นที่โพสต์ไว้ ไม่มีปัญหาในการจัดเก็บค่าภาษาฮิบรูและภาษาอังกฤษในฟิลด์เดียวกัน แน่นอนฉันแนะนำให้เก็บข้อมูลเป็น UTF-8 ในกรณีเหล่านั้น

person dotancohen    schedule 10.04.2015