בעיה מוזרה עם סדר א"ב בSQL

floppy disk

New member
בעיה מוזרה עם סדר א"ב בSQL

אני משתמש בשאילתא הבאה
SELECT * FROM table ORDER BY `hebrew_name`​
משום מה השאילתא מחזירה את התוצאות כאשר מילים המתחילות באות ב' נמצאות לפני מילים המתחילות באות א'. מדוע זה קורה וכיצד ניתן לסדר זאת? תודה רבה מראש לעוזרים
 

floppy disk

New member
בסינטקס הזה אני משתמש, זה לא משנה

גם כשהורדתי זה לא עבד יותר טוב.
 
יתכן שקיים space לפני ה "ב" הראשונה

או תו אחר ? כל המילים שמתחילות ב "ב" באות לפני המילים שמתחילות ב "א" ? אולי תוסיף "asc" אחרי ה ORDER BY `hebrew_name` ?
 

floppy disk

New member
לא, אין תוים מקדימים. להלן הפלט:

בתי קפה אתרים חשובים חנויות טבע ובריאות חיות נותני שירות מיוחדים מסעדות וברים מספרות ואסתטיקה מעצבים ממש חסר היגיון לחלוטין!
 

aviovda

New member
אולי

הוא רואה את בתי קפה משום מה כמחרוזת לועזית. כדי לבדוק תכתוב במקום בתי קפה, "בתי קפת" אם הוא יזרוק את המילה לסוף הרשימה, כנראה זאת הבעיה וצריך לרשום מחדש את הערך.
 

shanor

New member
מממ....

דיי פשוט, תשנה את השדה בטבלה כך ששדה שהוא varchar או char יהיה בנוסף גם בינארי, והפלא ופלא הכל יהיה בסדר, והעולם ימשיך להסתובב על צירו. -=שנאור=-
 
תבדוק באיזה collation אתה משתמש

אתה כניראה משתמש בcollation ברירת המחדל ולא בcollation שמכיר עברית, לכן אתה מקבל מיון לא נכון. ניתן לטפל בזה ב2 צורות. דרך אחת לשנות את הcollation של אותה עמודה. דרך שניה לשנות את הorder by שיעבוד עם collation אחר. לדוגמא:
SELECT * FROM table ORDER BY Hebrew_name collate Hebrew_CI_AI​
 
למעלה