sql >> Database >  >> RDS >> Sqlserver

Hoe de QUOTENAME()-functie werkt in SQL Server (T-SQL)

In SQL Server is de T-SQL QUOTENAME() functie retourneert een Unicode-tekenreeks met de scheidingstekens toegevoegd om de invoertekenreeks een geldige SQL Server-gescheiden id te maken.

Het is ontworpen voor het citeren van databases en hun objecten.

De functie accepteert twee argumenten; de invoertekenreeks (vereist) en een scheidingsteken (optioneel).

Syntaxis

De syntaxis gaat als volgt:

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

Waar character_string is de invoertekenreeks, en quote_character is een optioneel argument om een ​​teken op te geven dat als scheidingsteken moet worden gebruikt. Indien weggelaten, worden haakjes gebruikt als scheidingsteken.

Merk op dat character_string is sysname en is beperkt tot 128 tekens. Invoer groter dan 128 tekens retourneert NULL .

Geldige scheidingstekens (voor het optionele quote_character argument) zijn:

  • ` (backtick)
  • ' (enkel aanhalingsteken)
  • " (dubbel aanhalingsteken)
  • [] (linker of rechter haakje)
  • () (linker of rechter haakje)
  • <> (kleiner dan of groter dan teken)
  • {} (links of rechts accolade)

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld van hoe het werkt:

SELECT QUOTENAME('cat[]dog') AS Result;

Resultaat:

+-------------+
| Result      |
|-------------|
| [cat[]]dog] |
+-------------+

Voorbeeld 2 – Aangepast scheidingsteken

Hier is een voorbeeld van het specificeren van een ander scheidingsteken:

SELECT QUOTENAME('cat[]dog', '}') AS Result;

Resultaat:

+------------+
| Result     |
|------------|
| {cat[]dog} |
+------------+

En dit is wat er gebeurt als we de middelste haakjes veranderen in accolades:

SELECT QUOTENAME('cat{}dog', '}') AS Result;

Resultaat:

+-------------+
| Result      |
|-------------|
| {cat{}}dog} |
+-------------+

Voorbeeld 3 – Ongeldige invoerreeks

Zoals vermeld, is de invoerstring sysname , en daarom is het beperkt tot 128 tekens. systeemnaam is een door het systeem geleverd, door de gebruiker gedefinieerd gegevenstype dat functioneel equivalent is aan nvarchar(128) , behalve dat het niet nullable is. systeemnaam wordt gebruikt om naar namen van databaseobjecten te verwijzen.

Dit is wat er gebeurt als de invoerreeks te lang is:

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;

Resultaat:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Voorbeeld 4 – Ongeldig scheidingsteken

Dit gebeurt er als u een ongeldig scheidingsteken opgeeft:

SELECT QUOTENAME('cat[]dog', '!') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

  1. PostgreSQL-reeks gebaseerd op een andere kolom

  2. MySQL varchar-indexlengte

  3. Hoe te kiezen uit twee tabellen in MySQL, zelfs als niet alle rijen in de ene tabel correspondenten hebben in de andere?

  4. Verbinding maken met SQL Server LocalDB met behulp van JDBC