Escaping or Renaming: How to Handle Column Names That Clash with SQL Keywords in SQL Server and MySQL
-
SELECT `order` FROM mytable; (MySQL)
or
SELECT [order] FROM mytable; (SQL Server)
MySQL:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
`OrderDate` DATE, -- Escape "OrderDate" with backticks
CustomerName VARCHAR(255)
);
SELECT `OrderDate`, CustomerName FROM Orders;
SQL Server:
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
[OrderDate] DATE, -- Escape "OrderDate" with square brackets
CustomerName VARCHAR(255)
);
SELECT [OrderDate], CustomerName FROM Orders;
Renaming the Column:
This example assumes you can modify the table structure.
ALTER TABLE Orders RENAME COLUMN `OrderDate` TO OrderPlaced; -- MySQL
ALTER TABLE Orders RENAME COLUMN [OrderDate] TO OrderPlaced; -- SQL Server
Here's an example using an alias:
SELECT OrderDate AS "Date of Order", CustomerName FROM Orders;
sql sql-server