Backtick (`) ใน MySQL ใช้สำหรับ Escape Identifier (ชื่อตาราง, ชื่อคอลัมน์, ชื่อฐานข้อมูล) เท่านั้น ไม่สามารถใช้กับ Value (Literal Value) ได้ หากใช้จะเกิด Error
ตัวอย่างผิด: ใช้ Backtick กับ Value
mysql> create table DemoTable6 (SystemIPAddress varchar(200));
mysql> insert into DemoTable6 values('192.68.1.0'),('191.23.41.10');
mysql> select * from DemoTable6 where SystemIPAddress=`191.23.41.10`;
Error ที่เกิดขึ้น
ERROR 1054 (42S22): Unknown column '191.23.41.10' in 'where clause'
เหตุผล
MySQL ตีความ `191.23.41.10` ว่าเป็น ชื่อคอลัมน์ ไม่ใช่สตริง Literal จึงหาคอลัมน์ชื่อนี้ไม่เจอ
วิธีถูกต้อง: ใช้ Single Quote
mysql> select * from DemoTable6 where SystemIPAddress='191.23.41.10';
ผลลัพธ์ถูกต้อง
+-----------------+ | SystemIPAddress | +-----------------+ | 191.23.41.10 | +-----------------+
กฎการใช้ Quote ใน MySQL
| Quote Type | ใช้กับ | ตัวอย่าง |
|---|---|---|
Backtick ` | Identifier (Table, Column, DB, Alias) | SELECT `id` FROM `users` |
Single Quote ' | String Literal, Date Literal | WHERE name = 'John' |
Double Quote " | String Literal (ถ้า ANSI_QUOTES OFF) | WHERE name = "John" |
Double Quote " | Identifier (ถ้า ANSI_QUOTES ON) | SELECT "id" FROM "users" |