SELECT [id], [name] FROM [TESTDB].[dbo].[TABLE01] WHERE [name] LIKE "ก%"
จากคำสั่งข้างต้น เราจะเห็นว่า ข้อมูลที่เป็นภาษาไทยที่ขึ้นต้นด้วย ก ก็น่าจะออกมาแสดงทั้งหมด แต่ท่านทราบไหมว่า ภาษาไทย คำว่า "เกษม" เราก็ถือว่าขึ้นต้นด้วย "ก" แต่ผลลัพธ์ของที่ได้จากคำสั่งข้างต้น กลับไม่สามารถหาคำว่า เกษม เจอ ...... คราวนี้ก็ยุ่งซิ ต้องการข้อมูลแต่กลับได้ออกมาไม่ตรง แล้วจะทำไงดี...... เราก็ต้องประยุกต์คำสั่งอื่นมาใช้แทน โดยอาศัยคำสั่ง CHARINDEX กับ COLLATE THAI_BIN มาช่วย ดังตัวอย่างตามภาพด้านล่าง
จากการทดสอบคำสั่งทั้ง 2 รูปแบบ ผลที่ได้ออกมาต่างกัน ดังนั้น หากต้องการสอบถามข้อมูลภาษาไทย ก็สามารถใช้ CHARINDEX เข้ามาช่วยได้
เช่น ถ้าต้องการหาข้อความ "ก" ณ.ตำแหน่งใด ๆ ก็ได้ ให้ใช้
CHARINDEX('ก',[ชื่อคอลัมน์] COLLATE THAI_BIN) > 0
หรือ ถ้าต้องการหาข้อความ "ก" ณ.ตำแหน่งเริ่มต้น ให้ใช้
CHARINDEX('ก',[ชื่อคอลัมน์] COLLATE THAI_BIN) BETWEEN 1 AND 2
เราสามารถนำไปประยุกต์ใช้ได้อีกหลากหลายตามต้องการ
สำหรับตัวอย่างที่กล่าวมาจะไม่คำนึงถึงความเร็วในการประมวลผล แต่ต้องการค่าที่ถูกต้องและตรงกับสิ่งที่ต้องการ
สวัสดี ฝนตกเยอะจริงปีนี้
เช่น ถ้าต้องการหาข้อความ "ก" ณ.ตำแหน่งใด ๆ ก็ได้ ให้ใช้
CHARINDEX('ก',[ชื่อคอลัมน์] COLLATE THAI_BIN) > 0
หรือ ถ้าต้องการหาข้อความ "ก" ณ.ตำแหน่งเริ่มต้น ให้ใช้
CHARINDEX('ก',[ชื่อคอลัมน์] COLLATE THAI_BIN) BETWEEN 1 AND 2
เราสามารถนำไปประยุกต์ใช้ได้อีกหลากหลายตามต้องการ
สำหรับตัวอย่างที่กล่าวมาจะไม่คำนึงถึงความเร็วในการประมวลผล แต่ต้องการค่าที่ถูกต้องและตรงกับสิ่งที่ต้องการ
สวัสดี ฝนตกเยอะจริงปีนี้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น