Caracteres complementares

Os tipos de dados nchar e nvarchar armazenam cada caractere como um valor de 16 bits em uma codificação chamada UCS-2. Essa codificação, definida por versões da Unicode anteriores a 1996, dá suporte a caracteres no intervalo de U+0000 a U+FFFF. Versões mais novas da Unicode definiam caracteres adicionais no intervalo de U+10000 a U+10FFFF chamados de caracteres adicionais. Esses caracteres são armazenados como pares de valores de 16 bits, chamados de pares substitutos, em uma codificação chamada UTF-16. Todos os novos agrupamentos de nível _100 dão suporte à classificação linguística com caracteres suplementares. 

Se você usar caracteres complementares, leve em consideração as seguintes limitações:

  • Caracteres suplementares só podem ser usados em operações de comparação e ordenação em versões de agrupamento 90 ou maiores.

  • Como os caracteres suplementares são armazenados como dois valores de 16 bits, a função LEN() retorna o valor 2 para cada caractere suplementar contido na cadeia de caracteres do argumento. Da mesma forma, as funções CHARINDEX e PATINDEX representam incorretamente a ocorrência de caracteres suplementares dentro de cadeias de caracteres.

  • As funções LEFT, RIGHT, SUBSTRING, STUFF, e REVERSE podem dividir qualquer par substituto e levar a resultados inesperados.

  • Os caracteres suplementares não têm suporte para uso com o sublinhado (_), porcentagem (%) e caracteres curingas de circunflexo (^).

  • Os caracteres suplementares não têm suporte para uso em metadados, como em nomes de objetos de banco de dados.

Para um script Transact-SQL relacionado a este cenário, consulte o exemplo Manipulação de cadeia de caracteres com reconhecimento de suplementares. Para obter informações sobre exemplos, consulte Considerações para instalar exemplos e bancos de dados de exemplo do SQL Server.