UNISTR (Transact-SQL)
Si applica a:Database SQL di Azure
UNISTR
fornisce il supporto per i valori letterali stringa Unicode consentendo di specificare il valore di codifica Unicode dei caratteri nella stringa.
UNISTR
restituisce i caratteri Unicode corrispondenti all'espressione di input, come definito dallo standard Unicode.
La sequenza di escape per un carattere Unicode può essere specificata sotto forma di \xxxx
o , dove \+xxxxxx
è un valore di punto di codice UTF-16 valido ed xxxx
è un valore di punto di xxxxxx
codice Unicode valido. È possibile cercare i valori dei punti di codice Unicode nei grafici di codice Unicode.
Rispetto alle funzioni come NCHAR
, UNISTR
offre un modo più flessibile e completo per gestire i caratteri Unicode. Ad esempio, mentre NCHAR
può convertire un singolo valore Unicode in un carattere, UNISTR
gestisce più valori Unicode e sequenze di escape, semplificando l'uso di stringhe complesse che includono vari caratteri Unicode.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )
Osservazioni
I vantaggi principali di UNISTR
includono:
supporto per le sequenze di escape Unicode:
UNISTR
consente di specificare caratteri Unicode usando sequenze di escapeflessibilità con tipi di input:
UNISTR
supporta diversi tipi di caratteri, ad esempio char, nchar, varchare nvarchar. Per i tipi di dati char e varchar , le regole di confronto devono essere valide per UTF-8.Caratteri di escape personalizzati: è possibile definire un carattere di escape personalizzato per eseguire la conversione necessaria dei valori Unicode in un set di caratteri stringa.
Supporto della tabella codici
La funzione UNISTR
non è compatibile con le tabelle codici legacy, ovvero non supporta regole di confronto che usano set di caratteri non Unicode. Queste regole di confronto con le tabelle codici legacy possono essere identificate usando la query seguente.
SELECT DISTINCT p.language,
p.codepage
FROM sys.fn_helpcollations() AS c
CROSS APPLY (VALUES (LEFT(c.name, CHARINDEX('_', c.name) - 1),
COLLATIONPROPERTY(c.name, 'codepage'))) AS p(language, codepage)
WHERE p.codepage NOT IN (
0 /* Unicode Only collation */,
65001 /* UTF-8 code page */
);
Per altre informazioni, vedere Appendice G DBCS/Unicode Mapping Tables e Appendice H tabelle codici.
Argomenti
'character_expression'
Espressione di qualsiasi tipo di carattere, ad esempio char, nchar, varchar o nvarchar. Per i tipi di dati char e varchar , le regole di confronto devono essere valide per UTF-8. È possibile specificare valori letterali stringa o unicode o valori punto di codice UTF-16 o entrambi.
character_expression
supporta una lunghezza pari a varchar(max) e nvarchar(max).
N'unicode_escape_character'
Carattere singolo che rappresenta una sequenza di escape Unicode definita dall'utente. Se non viene specificato, il valore predefinito è \
.
Tipi restituiti
Valore stringa la cui lunghezza e tipo dipendono dai tipi di input.
Esempi
R. Usare UNISTR e la funzione NCHAR
Gli esempi seguenti usano tutte le UNISTR
funzioni per eseguire la conversione necessaria dei valori Unicode nel set di caratteri stringa, per visualizzare il carattere Unicode Sorridente viso con bocca aperta. Le regole di confronto del database devono essere regole di confronto UTF-8 se l'input è di tipi di dati char o varchar .
Uso di UNISTR
e NCHAR
:
SELECT N'Hello! ' + NCHAR(0xd83d) + NCHAR(0xde00);
Questo esempio di esempio può essere scritto anche:
SELECT UNISTR(N'Hello! \D83D\DE00');
SELECT UNISTR(N'Hello! \+01F603');
Il set di risultati è il seguente.
-----------
Hello! 😃
B. Usare la funzione UNISTR con carattere di escape definito dall'utente
Nell'esempio seguente viene utilizzata la UNISTR
funzione con un carattere di escape personalizzato per eseguire la conversione necessaria di Unicode in un set di caratteri stringa.
SELECT UNISTR(N'ABC#00C0#0181#0187', '#');
Il set di risultati è il seguente.
-----------
ABCÀƁƇ
C. Usare la funzione UNISTR combinando valori letterali stringa e punti di codice Unicode
Nell'esempio seguente, UNISTR
viene usato con un carattere di escape definito dall'utente ($
) e un tipo di dati varchar con regole di confronto UTF-8. Combina valori letterali stringa con un valore del punto di codice Unicode:
SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');
Il set di risultati è il seguente.
------------------
I ♥ Azure SQL.
D. Usare la funzione UNISTR per i caratteri oltre il limite UTF-8
Se è necessario usare un set di caratteri oltre UTF-8, è necessario convertire la sequenza di caratteri in UTF-8 usando la clausola COLLATE
. Ecco un esempio:
SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;
Il set di risultati è il seguente.
Yes_in_Japanese_Hiragana
------------------------
はい