QUOTENAME Function in MS SQL Server and MySQL


The MSSQL QUOTENAME function is not available in MySQL, but the functionality can be achieved by writing a manual function.

MSSQL

QUOTENAME returns a passed string with delimiters added, making it a valid SQL Server identifier.

Syntax:

QUOTENAME ( 'character_string' [ , 'quote_character' ] )

Example:

select QUOTENAME('My Column')
-----------------------
[My Column]

QUOTENAME function in MSSQL

select QUOTENAME('My[] Column')
------------------
[My[]] Column]

QUOTENAME Function Example

Notice that the right bracket in 'My[] Column' is doubled to indicate an escape character. QUOTENAME is useful when object names contain spaces or reserved words.

MySQL

There is no similar function available in MySQL, but you can create one to mimic this functionality:

DELIMITER //
CREATE FUNCTION QUOTENAME (str varchar(100)) returns varchar(102)
BEGIN
  DECLARE retval varchar(102);
  DECLARE delimiter char(1);
  set delimiter='`';
  set retval=CONCAT (delimiter, REPLACE(str, delimiter, CONCAT(delimiter,delimiter)), delimiter);
  return (retval);
END;  //
DELIMITER ;

Now you can use this function just as in MSSQL:

mysql> select quotename('My Column');
+------------------------+
| quotename('My Column') |
+------------------------+
| `My Column`             |
+------------------------+

Quotename Function in MySQL

mysql> select quotename('My` Column');
+-------------------------+
| quotename('My` Column') |
+-------------------------+
| `My`` Column`           |
+-------------------------+

Quotename in MySQL Example

Back to Converting Functions from MSSQL to MySQL