ฟังก์ชั่น like() กับการกรองอักษรภาษาไทย
กระทู้เก่าบอร์ด อ.Yeadram

 4,789   4
URL.หัวข้อ / URL
ฟังก์ชั่น like() กับการกรองอักษรภาษาไทย

สวัสดดีครับ ผมมีปัญหาการกรองข้อมูลที่เป็นภาษาไทยทั้งในคิวรี่และในฟอร์มโดยการใช้ Like() ซึ่งถ้าเป็นอักษรตัวเดียวมันจะกรองข้อมูลมาไม่ครบครับ ตัวอย่างเช่น
ผมมีข้อมูล
---------------------------
ID          aName
1            เอก
2            อ้อ
3            โอ๋
4            สน
5            แอน
---------------------------

ที่คิวรี่ ผมใช้เงื่อนไขที่ Criteria: Like "*อ*"
ตามที่เข้าใจมันต้องแสดงออกมาทั้งหมดที่มีข้อความ อ ยกเว้น ID ที่ 4 แต่กลับได้เป็น
---------------------------
ID          aName
2            อ้อ
---------------------------

ไม่ทราบว่า อาจารย์ทุกๆท่านเคยพบแบบนี้แล้วแก้ไขอย่างไร ให้สามารถดึงเอาทุกเรคคอร์ดที่มีอักษร อ ออกมาครบทั้งหมดครับ
ขอบคุณครับผม

4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R20326
ลองใช่ select ... from ... where instr(aName,"อ") > 0
2 @R20328
ขอบคุณมากๆครับ อ. สันติสุข ใช้ได้ตามต้องการครับ
อย่างนี้ผมจะเชื่อใจคำสั่ง Like ได้มากน้อยแค่ไหนครับ หรือไม่ควรใช้
เป็นไปได้ว่าทุกวันนี้คนที่ใช้ access แล้วกรองข้อมูลโดยใช้ like ด้วยภาษาไทยคำเดียวหรือคำที่มีสระ อาจได้ข้อมูลไม่ครบโดยไม่รู้ตัว อย่างเช่นในตัวอย่าง ผมลอง Like "*โอ*" พอคิวรี่กลับไม่มีข้อมูล ซึ่งตามความเข้าใจของผู้ใช้ต้องได้เรคคอดชื่อ โอ๋ ติดมาด้วย อย่างนี้ถ้าข้อมูลเยอะๆ เราจะมั่นใจได้อย่างไรกับการใช้คำสั่ง Like ในภาษาไทยของ access ซึ่งผมเขียนไปเยอะแล้วด้วยอะครับ ก่อนจะมาถามที่นี่
ยังไงก็ขอให้เพื่อนๆระวังด้วยแล้วกันนะครับ เพราะเท่าที่ผมค้นหาจากกระทู้เก่าๆ มันเป็นมานานแล้วจะถึงทุกวันนี้ 2013 ก็ยังเป็น เพราะมันเป็นกับภาษาไทยด้วยหรือป่าว เลยไม่ได้รับการแก้ไข
ขอบคุณอีกครั้งนะครับ อาจารย์สำหรับคำตอบ
3 @R20330
เชื่อว่าเป็นเพราะอัลกอรึธึมในการค้นหาภาษาไทยครับ และอีกอย่าง ไทยเราตลาดเล็กครับ ถ้าแจ้งไปทาง MS ไทย เขาก็ไม่มีคนรับเรื่องนี้ ต้องแจ้งไป call center ที่ดูแลภูมิภาคนี้ ซึ่งไม่ใช่คนไทย แล้วจะให้อธิบายให้เขารู้เรื่องได้ยังไง ไม่ต้องมานั่งสอนภาษาไทยให้คนรับเรื่องหรือ ส่วนเวปบอร์ดที่ถามปัญหา ก็เห็นมีแต่ต่างชาติทั้งนั้น ถ้าใครรู้จักคนใน MS ไทย ก็ช่วยแจ้งไปที
4 @R20331
ไม่ใช่แค่ MS Access หรอกครับ SQL อื่นๆ ก็เป็นครับ สมัยก่อนเจอกันบ่อย ผมไม่รู้ว่าเวอร์ชั่นใหม่ๆเค้าแก้กันสมบรูณ์หรือยัง เพียงแต่ SQL เค้าสามารถแก้ได้ด้วยการทำให้ อักษรไทย เป็น binary ได้ โดยการกำหนด COLLATE THAI_BIN LIKE ... ได้ ซึ่ง MS Access ทำไม่ได้ครับ มันจะมีประมาณ
THAI_BIN
THAI_BIN2
THAI_CI_AS
THAI_CI_AI
THAI_CS_AS
THAI_CS_AI
ผมเคยอ่านกระทู้
http://www.thaicreate.com/dotnet/forum/062440.html
ก็จะเข้าใจว่าเกิดจากอะไรมากขึ้นนะครับ
ส่วนวิธีแก้ใน MS Access ผมก็ใช้แบบเดียวกับ อ.สันติสุข นี่แหละครับ เพราะฟังก์ชั่น InStr() น่าจะเป็นการอ่านแบบ binary
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3719s