PlusMagi's Blog By Pitt Phunsanit MariaDB,MySql MariaDB, MySQL จัดการวรรคอักษร ‘ ๆ ‘

MariaDB, MySQL จัดการวรรคอักษร ‘ ๆ ‘

จากการอ่าน ไม้ยมก ( ๆ ) ตามท่านราชบัณฑิตยสภา มาต้องการที่จะ update บทความให้ WordPress ทั้งหมดโดย
การจะทำให้มี Space 1 ข้างหน้า และ 1 ข้างหลัง เท่านั้น (ไม่มากไม่น้อย) ด้วย SQL นั้นมีความซับซ้อนเล็กน้อย เพราะต้องจัดการทั้งกรณีที่ไม่มีวรรค และกรณีที่มีวรรคเกิน

วิธีที่มั่นใจที่สุดคือ

  1. เติมวรรคเข้าไปก่อนแล้ว
  2. ลบวรรคที่ซ้ำซ้อนออก

คำสั่ง SQL (Update)

คำสั่งนี้จะทำการ

  1. เปลี่ยน เป็น (เติมวรรคทุกตัว)
  2. แทนที่ (วรรคคู่) เป็น (วรรคเดี่ยว) 2 รอบ เพื่อจัดการกรณีที่มีวรรคเกินมากกว่า 2 ตัว
UPDATE wp_posts SET post_content = REPLACE (REPLACE (REPLACE (post_content, ' ๆ ', ' ๆ ') , ' ', ' ') , ' ', ' ') WHERE post_content LIKE '% ๆ %';

คำอธิบายการทำงาน

  1. REPLACE (..., ' ๆ ', ' ๆ ') : เติมวรรคหน้า-หลัง ให้ทุกตัวที่เจอ (กรณีเดิมมีวรรคอยู่แล้ว จะกลายเป็นวรรคคู่)
  2. REPLACE (..., ' ', ' ') (รอบที่ 1) : เก็บกวาดวรรคคู่ที่เกิดจากการเติม หรือวรรคคู่เดิมที่มีอยู่แล้ว
  3. REPLACE (..., ' ', ' ') (รอบที่ 2) : ทำซ้ำอีกครั้งเพื่อกรณีที่มีวรรค 3 ตัวขึ้นไป (3 วรรค -> 2 วรรค -> 1 วรรค)

✅ ตรวจสอบผลลัพธ์

หลังจากอัปเดต ให้รันคำสั่งนี้เพื่อเช็คว่ายังมีการจัดวรรคผิดรูปแบบเหลืออยู่หรือไม่

-- เช็คว่ามี ' ๆ ' ที่ไม่มีวรรคหน้าหรือหลังเหลืออยู่ไหม (ควรได้ 0) SELECT ID, post_title FROM wp_posts WHERE post_content REGEXP '[^ ] ๆ | ๆ [^ ]';

(หมายเหตุ: คำสั่ง REGEXP ใช้ตรวจสอบรูปแบบที่ซับซ้อน หากฐานข้อมูลเวอร์ชันเก่าอาจไม่รองรับ) หรือเช็คนับจำนวนอย่างง่าย

SELECT COUNT (*) FROM wp_posts WHERE post_content LIKE '% ๆ %' AND post_content NOT LIKE '% ๆ %';

หากได้ผลลัพธ์เป็น 0 แสดงว่าสำเร็จ


⚠️ ข้อควรระวังเพิ่มเติม

  1. วรรค ๆ : คำสั่งนี้มีการลบ วรรคคู่ (Double Space) ทั้งหมดในบทความ ไม่ใช่แค่รอบตัว ซึ่งโดยปกติเป็นผลดีต่อการจัดรูปแบบเว็บอยู่แล้ว
  2. ขึ้นต้น / จบประโยค: หาก อยู่ตัวแรกสุดของบทความ จะมีวรรคนำหน้า 1 ตัว หากอยู่ตัวสุดท้ายจะมีวรรคตามหลัง 1 ตัว ตามเงื่อนไข

อ่านเพิ่มเติม

ป้ายกำกับ:, ,