В этом руководстве вы узнаете, как использовать функцию SQL Server QUOTENAME(), чтобы сделать строку допустимым идентификатором с разделителями SQL Server.
Функция SQL Server QUOTENAME()
Функция SQL Server QUOTENAME() добавляет разделители к входной строке, чтобы сделать эту строку допустимым идентификатором SQL Server с разделителями.
Ниже показан синтаксис функции QUOTENAME():
QUOTENAME( input_string [ , quote_character ] )
Функция QUOTENAME() принимает два аргумента:
- input_string — это SYSNAME, максимальная длина которого составляет 128 символов. Если длина input_string превышает 128 символов, функция вернет NULL.
- quote_character — символ, который используется в качестве разделителя.
Допустимыми символами кавычек являются следующие:
- Одинарная кавычка( ' )
- Левая или правая скобка( [] )
- Двойные кавычки( ”)
- Левая или правая скобка(() )
- Знак «больше» или «меньше»( >< )
- Левая или правая фигурная скобка( {} )
- Обратный апостроф(`).
Если вы используете недопустимый символ, функция вернет NULL. По умолчанию quote_character будет содержать скобки, если вы его пропустите.
SQL Server QUOTENAME() полезен в динамическом SQL.
Пример функции SQL Server QUOTENAME()
Следующие операторы создают новую таблицу, имя которой содержит пробел, и вставляют в таблицу новую строку:
CREATE TABLE [customer details] ( customer_id INT PRIMARY KEY, info VARCHAR(255) ); INSERT INTO [customer details] ( customer_id, info ) VALUES ( 1, 'detailed information...' );
Следующий код пытается запросить данные из таблицы [сведения о клиенте] с помощью динамического SQL:
DECLARE @tablename VARCHAR(128) = 'customer details'; DECLARE @sql NVARCHAR(100) = 'SELECT * FROM ' + @tablename; EXECUTE(@sql);
Возвращает следующую ошибку:
Invalid object name 'customer'.
Следующий код делает имя таблицы допустимым с помощью функции QUOTENAME():
DECLARE @tablename VARCHAR(128) = 'customer details'; DECLARE @sql NVARCHAR(100) = 'SELECT * FROM ' + QUOTENAME(@tablename); EXECUTE(@sql);
Вот что получилось:
customer_id info ----------- ----------------------- 1 detailed information... (1 row affected)
В этом руководстве вы узнали, как использовать функцию SQL Server QUOTENAME() для добавления разделителей к строке и превращения этой строки в допустимый идентификатор SQL Server с разделителями.