กระทู้เก่าบอร์ด อ.Yeadram
4,789 4
URL.หัวข้อ /
URL
ฟังก์ชั่น like() กับการกรองอักษรภาษาไทย
สวัสดดีครับ ผมมีปัญหาการกรองข้อมูลที่เป็นภาษาไทยทั้งในคิวรี่และในฟอร์มโดยการใช้ Like() ซึ่งถ้าเป็นอักษรตัวเดียวมันจะกรองข้อมูลมาไม่ครบครับ ตัวอย่างเช่น
ผมมีข้อมูล
---------------------------
ID aName
1 เอก
2 อ้อ
3 โอ๋
4 สน
5 แอน
---------------------------
ที่คิวรี่ ผมใช้เงื่อนไขที่ Criteria: Like "*อ*"
ตามที่เข้าใจมันต้องแสดงออกมาทั้งหมดที่มีข้อความ อ ยกเว้น ID ที่ 4 แต่กลับได้เป็น
---------------------------
ID aName
2 อ้อ
---------------------------
ไม่ทราบว่า อาจารย์ทุกๆท่านเคยพบแบบนี้แล้วแก้ไขอย่างไร ให้สามารถดึงเอาทุกเรคคอร์ดที่มีอักษร อ ออกมาครบทั้งหมดครับ
ขอบคุณครับผม
ผมมีข้อมูล
---------------------------
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 ก็ยังเป็น เพราะมันเป็นกับภาษาไทยด้วยหรือป่าว เลยไม่ได้รับการแก้ไข
ขอบคุณอีกครั้งนะครับ อาจารย์สำหรับคำตอบ
อย่างนี้ผมจะเชื่อใจคำสั่ง 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
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
Time: 0.3719s