UNISTR (Transact-SQL)
Se aplica a:Azure SQL Database
UNISTR
proporciona compatibilidad con literales de cadena Unicode al permitirle especificar el valor de codificación Unicode de caracteres en la cadena.
UNISTR
devuelve los caracteres Unicode correspondientes a la expresión de entrada, tal como se define en el estándar Unicode.
La secuencia de escape de un carácter Unicode se puede especificar en forma de \xxxx
o \+xxxxxx
, donde xxxx
es un valor de punto de código UTF-16 válido y xxxxxx
es un valor de punto de código Unicode válido. Puede buscar valores de punto de código Unicode en los gráficos de código Unicode.
En comparación con las funciones como NCHAR
, UNISTR
proporciona una manera más flexible y completa de controlar caracteres Unicode. Por ejemplo, aunque NCHAR
puede convertir un único valor Unicode en un carácter, UNISTR
controla varios valores Unicode y secuencias de escape, lo que facilita el trabajo con cadenas complejas que incluyen varios caracteres Unicode.
Convenciones de sintaxis de Transact-SQL
Sintaxis
UNISTR ( 'character_expression' [ , 'unicode_escape_character' ] )
Observaciones
Entre las principales ventajas de UNISTR
se incluyen:
compatibilidad con secuencias de escape Unicode:
UNISTR
permite especificar caracteres Unicode mediante secuencias de escapeFlexibilidad con tipos de entrada:
UNISTR
admite varios tipos de caracteres, como char, nchar, varchary nvarchar. Para los tipos de datos char y varchar , la intercalación debe ser una intercalación UTF-8 válida.caracteres de escape personalizados: puede definir un carácter de escape personalizado para realizar la conversión necesaria de valores Unicode en un juego de caracteres de cadena.
Compatibilidad con páginas de códigos
La función UNISTR
no es compatible con páginas de códigos heredadas, lo que significa que no admite intercalaciones que usan juegos de caracteres no Unicode. Estas intercalaciones con páginas de códigos heredadas se pueden identificar mediante la consulta siguiente.
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 */
);
Para obtener más información, vea apéndice G DBCS/Unicode Mapping Tables y Apéndice H Code Pages.
Argumentos
"character_expression"
Expresión de cualquier tipo de carácter, como char, nchar, varchar o nvarchar. Para los tipos de datos char y varchar , la intercalación debe ser una intercalación UTF-8 válida. Puede especificar literales de cadena o valores de punto de código Unicode o UTF-16 o ambos.
character_expression
admite una longitud tan grande como varchar(max) y nvarchar(max).
N'unicode_escape_character'
Carácter único que representa una secuencia de escape Unicode definida por el usuario. Si no se proporciona, el valor predeterminado es \
.
Tipos de valores devueltos
Valor de cadena cuya longitud y tipo dependen de los tipos de entrada.
Ejemplos
A Uso de UNISTR frente a la función NCHAR
En los ejemplos siguientes se usan todas las UNISTR
funciones para realizar la conversión necesaria de los valores Unicode en un juego de caracteres de cadena, para mostrar el carácter unicode Cara sonriente con boca abierta. La intercalación de base de datos debe ser una intercalación UTF-8 si la entrada es de tipos de datos char o varchar .
Mediante UNISTR
y NCHAR
:
SELECT N'Hello! ' + NCHAR(0xd83d) + NCHAR(0xde00);
Este ejemplo también se puede escribir:
SELECT UNISTR(N'Hello! \D83D\DE00');
SELECT UNISTR(N'Hello! \+01F603');
Este es el conjunto de resultados.
-----------
Hello! 😃
B. Uso de la función UNISTR con el carácter de escape definido por el usuario
En el ejemplo siguiente se usa la UNISTR
función con un carácter de escape personalizado para realizar la conversión necesaria de Unicode en un conjunto de caracteres de cadena.
SELECT UNISTR(N'ABC#00C0#0181#0187', '#');
Este es el conjunto de resultados.
-----------
ABCÀƁƇ
C. Usar la función UNISTR mediante la combinación de literales de cadena y puntos de código Unicode
En el ejemplo siguiente, UNISTR
se usa con un carácter de escape definido por el usuario ($
) y un varchar tipo de datos con intercalación UTF-8. Combina literales de cadena con un valor de punto de código Unicode:
SELECT UNISTR('I $2665 Azure SQL.' COLLATE Latin1_General_100_CI_AS_KS_SC_UTF8, '$');
Este es el conjunto de resultados.
------------------
I ♥ Azure SQL.
D. Uso de la función UNISTR para caracteres más allá del límite de UTF-8
Si necesita usar un juego de caracteres más allá de UTF-8, debe convertir la secuencia de caracteres en UTF-8 mediante la cláusula COLLATE
. Este es un ejemplo:
SELECT UNISTR('\306F\3044' COLLATE Latin1_General_100_BIN2_UTF8) AS Yes_in_Japanese_Hiragana;
Este es el conjunto de resultados.
Yes_in_Japanese_Hiragana
------------------------
はい
Contenido relacionado
- ASCII (Transact-SQL)
- CHAR (Transact-SQL)
- NCHAR (Transact-SQL)
- String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]
- Compatibilidad con la intercalación y Unicode