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 ตัว ตามเงื่อนไข

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

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