ช่วยแนะนำการแก้ไข User Function ของ MySQL เมื่อเกิด Error เกี่ยวกับ Collection UTF8 กับ TIS620 หน่อยครับ

ผมทำ MySQL User Function ตัดอักขระพิเศษ สำหรับการเรียกใช้ ในฐานข้อมูลขึ้นมาครับ
แต่ปัญหาคือว่า Table ของผมเป็น Collection TIS620 ซึ่งไม่ Support การเรียก Function ตัดอักขระพิเศษตรงนี้ครับ
เราจะมีวิธีการแก้ไข  MySQL User Function ยังไงครับ เพื่อให้ฟังก์ชั่นนี้เรียกใช้ได้ผ่าน Table Collection TIS620 ได้ครับ

ส่วนข้างล่างนี้คือ MySQL ฟังก์ชั่นของผมครับ

DELIMITER @@
CREATE FUNCTION RepSpialChar(Instr Text)
RETURNS Text
BEGIN
            DECLARE Outstr Text;
            SET Outstr=REPLACE(Instr,'!',' ');
            SET Outstr=REPLACE(Instr,'#',' ');
            SET Outstr=REPLACE(Instr,'$',' ');
            SET Outstr=REPLACE(Instr,'%',' ');
            SET Outstr=REPLACE(Instr,'&',' ');
            SET Outstr=REPLACE(Instr,'(',' ');
            SET Outstr=REPLACE(Instr,')',' ');
            SET Outstr=REPLACE(Instr,'*',' ');
            SET Outstr=REPLACE(Instr,'+',' ');
            SET Outstr=REPLACE(Instr,',',' ');
            SET Outstr=REPLACE(Instr,'.',' ');
            SET Outstr=REPLACE(Instr,'/',' ');
            SET Outstr=REPLACE(Instr,':',' ');
            SET Outstr=REPLACE(Instr,';',' ');
            SET Outstr=REPLACE(Instr,'<',' ');
            SET Outstr=REPLACE(Instr,'=',' ');
            SET Outstr=REPLACE(Instr,'>',' ');
            SET Outstr=REPLACE(Instr,'?',' ');
            SET Outstr=REPLACE(Instr,'@',' ');
            SET Outstr=REPLACE(Instr,'[',' ');
            SET Outstr=REPLACE(Instr,']',' ');
            SET Outstr=REPLACE(Instr,'^',' ');
            SET Outstr=REPLACE(Instr,'_',' ');
            SET Outstr=REPLACE(Instr,'`',' ');
            SET Outstr=REPLACE(Instr,'{',' ');
            SET Outstr=REPLACE(Instr,'|',' ');
            SET Outstr=REPLACE(Instr,'}',' ');
            SET Outstr=REPLACE(Instr,'~',' ');
            SET Outstr=REPLACE(Instr,'‘',' ');
                                 SET Outstr=REPLACE(Instr,'ฯ',' ');
            SET Outstr=REPLACE(Instr,'',' ');
                                 SET Outstr=REPLACE(Instr,'฿',' ');
RETURN Outstr;
END@@
DELIMITER ;

และข้างล่างนี้คือ Error Screen Shot ครับ



ขอท่านผู้รู้ช่วยแนะนำผมด้วยครับ
ขอบคุณครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
ดูจาก error คิดว่าน่าจะต้องมีคำสั่ง set names tis-620 ขึ้นจั่วหัวคำสั่งหรือเปล่า เอาเป็นว่าผมก็ไม่รู้หรอกนะ แต่ดูจาก error หลัก ๆ ของคุณมาจากคำสั่ง  replace นั่นแหล่ะ มันมี parameter 3 ตัว
- ตัวแรก คือ parameter ที่ส่งเข้ามา น่าจะเป็น tis-620
- ตัวที่สอง คือ ตัวที่ค้นหา อันนี้มันจะเป็น general_ci
- ตัวที่สาม คือ ตัวที่แทนค่า อันนี้มันจะเป็น general_ci

ดังนั้นถ้าหาวิธีแปลง parameter ตัวที่ 2 และ 3 ให้เป็น tis ก่อน (ผมไม่มั่นใจคำสั่ง) ก็น่าจะเวิร์ก


สุดท้าย ลอจิกคุณผิดอยู่นะ
น่าจะเขียนเป็น

SET Outstr=REPLACE(Instr,'!',' ');
SET Outstr=REPLACE(Outstr,'#',' ');
SET Outstr=REPLACE(Outstr,'$',' ');
.
.
.
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่