В SQL Server, T-SQL QUOTENAME()
функцията връща Unicode низ с добавени разделители, за да направи входния низ валиден разделен идентификатор на SQL Server.
Той е проектиран за цитиране на бази данни и техните обекти.
Функцията приема два аргумента; входния низ (задължителен) и разделител (по избор).
Синтаксис
Синтаксисът е така:
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
Където символен низ е входният низ и цитатният_символ е незадължителен аргумент за определяне на символ, който да се използва като разделител. Ако е пропуснат, скоби се използват като разделител.
Обърнете внимание, че character_string е sysname и е ограничен до 128 знака. Въвеждането, по-голямо от 128 знака, връща NULL
.
Валидни разделители (за незадължителния цитат_знак аргумент) са:
`
(отметка)'
(единични кавички)"
(двойни кавички)[]
(лява или дясна скоба)()
(лява или дясна скоба)<>
(знак по-малко или по-голям){}
(лява или дясна скоба)
Пример 1 – Основна употреба
Ето пример за това как работи:
SELECT QUOTENAME('cat[]dog') AS Result;
Резултат:
+-------------+ | Result | |-------------| | [cat[]]dog] | +-------------+
Пример 2 – Персонализиран разделител
Ето пример за посочване на различен разделител:
SELECT QUOTENAME('cat[]dog', '}') AS Result;
Резултат:
+------------+ | Result | |------------| | {cat[]dog} | +------------+
И ето какво се случва, ако променим средните скоби с къдрави скоби:
SELECT QUOTENAME('cat{}dog', '}') AS Result;
Резултат:
+-------------+ | Result | |-------------| | {cat{}}dog} | +-------------+
Пример 3 – Невалиден входен низ
Както споменахме, входният низ е sysname , и следователно е ограничен до 128 знака. системно име е предоставен от системата потребителски дефиниран тип данни, който е функционално еквивалентен на nvarchar(128) , с изключение на това, че не е нула. системно име се използва за препратка към имената на обекти на базата данни.
Ето какво се случва, ако входният низ е твърде дълъг:
SELECT QUOTENAME('This text is too long to be an input string for this function, because it contains more than 128 characters - too long for sysname.') AS Result;
Резултат:
+----------+ | Result | |----------| | NULL | +----------+
Пример 4 – Невалиден разделител
Ето какво се случва, ако посочите невалиден разделител:
SELECT QUOTENAME('cat[]dog', '!') AS Result;
Резултат:
+----------+ | Result | |----------| | NULL | +----------+