Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แสดงข้อความที่มี Single Quote เป็นค่าคอลัมน์ใน MySQL

ปัญหา

ใน SQL String literal ใช้ Single Quote (') ปิดเปิด หากข้อความมี Single Quote อยู่ภายใน (เช่น You've) จะทำให้ Syntax Error

วิธีแก้: ใช้ Double Quote ปิดเปิด String

MySQL รองรับ Double Quote (") เป็น String Delimiter (ถ้าไม่ตั้งค่า ANSI_QUOTES SQL Mode)

ตัวอย่างสมบูรณ์

1. สร้างตาราง

CREATE TABLE DemoTable (Note TEXT);

2. Insert ด้วย Double Quote

INSERT INTO DemoTable VALUES ("You've seen the Taj? When?");
INSERT INTO DemoTable VALUES ("You've visited the US?");

3. ผลลัพธ์

SELECT * FROM DemoTable;
+---------------------------------+
| Note                            |
+---------------------------------+
| You've seen the Taj? When?      |
| You've visited the US?          |
+---------------------------------+

วิธีอื่นๆ ในการจัดการ Quote

1. Escape ด้วย Backslash (\)

INSERT INTO DemoTable VALUES ('You\'ve seen the Taj?');

2. Double Single Quote ('')

INSERT INTO DemoTable VALUES ('You''ve seen the Taj?');

ใน SQL Standard: สอง Single Quote ติดกัน = Single Quote หนึ่งตัวในสตริง

3. ใช้ QUOTE() Function

INSERT INTO DemoTable VALUES (QUOTE("You've seen the Taj?"));
-- QUOTE() จะคืนค่าที่ Escape แล้ว พร้อม Quote ครอบ

สรุปวิธีต่างๆ

วิธีตัวอย่างหมายเหตุ
Double Quote"You've"ง่ายที่สุด ต้องไม่มี ANSI_QUOTES mode
Escape Backslash'You\'ve'มาตรฐาน ต้องการ backslash
Double Single Quote'You''ve'ANSI SQL Standard
QUOTE()QUOTE("You've")อัตโนมัติ Escape และ Quote

ข้อแนะนำ

  • ใน Application ใช้ Prepared Statement (Parameterized Query) ไม่ต้องกังวล Quote
  • เขียน SQL ตรงๆ: ใช้ Double Quote หรือ Double Single Quote
  • ตั้งค่า sql_mode ให้รวม NO_BACKSLASH_ESCAPES หากต้องการความปลอดภัย