locked
Varchar ou Nvarchar RRS feed

  • Discussão Geral

  • Pessoal, Estou usando uma tabela com collation portugues e acentuacao.

    Com acentuacao o q é melhor usar varchar ou nvarchar ?

     

    domingo, 23 de outubro de 2011 16:59

Todas as Respostas

  • Neto,

    O datatype varchar considera caracteres não-UNICODE, o nvarchar, ao contrário, trabalhar com caracteres UNICODE.

    Entendo que o que realmente vai importar no seu caso é a escolha correta do COLLATION. O que você tem que levar em consideração é a quantidade armazenada por cada tipo de dado.

    O VARCHAR irá armazenar a quantidade informada, acrescida de 2bytes. Por exemplo, um campo VARCHAR(10) irá armazenar, no máximo, 10bytes + 2bytes. Estes dois bytes a mais são justamente por conta de ser um tipo de dado de tamanho variável.

    Já o NVARCHAR irá ocupar o dobro do espaço mais os 2bytes de controle. Então, no mesmo exemplo, um campo NVARCHAR(10) irá ocupar 20bytes + 2bytes.

    Isso fará muita diferença para o seu armazenamento e deve ser levado em consideração.

     

    Att.


    Erickson Ricci
    Microsoft MCP, MCTS SQL Server 2005, 2008
    Visite o meu blog: http://ericksonricci.wordpress.com
    Me siga no twitter: @EricksonRicci
    LinkedIN: http://br.linkedin.com/in/ericksonricci
    e-mail: ericksonfabricio@gmail.com
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    domingo, 23 de outubro de 2011 18:40
  • Mas entao nao entendi qual a finalidade de se usar uma ou outra.
    domingo, 23 de outubro de 2011 23:08
  • Boa Noite,

    Se você escolhe um collation em português, o universo de caractéres está limitado aos caractéres latinos. Se você escolhe uma collation árabe, o universo de caractéres estará limitado aos disponíveis no mundo árabe. Enquanto a collation contemplar tudo o que você precisa, não há porque optar pelo NVARCHAR. Você só deve usar o NVARCHAR quando for lidar com caracterés que uma collation sozinha não dê conta. Se seu banco for "internacionalizado", ou seja, for receber caractéres de qualquer idioma, o NVARCHAR é obrigatório. Do contrário, mantenha o VARCHAR, pois, economizar mais espaço.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    domingo, 23 de outubro de 2011 23:17
  • O UNICODE define um padrão de codificação que pode ser utilizado com qualquer tipo de caracteres no mundo todo. Se esta não for a sua necessidade, ou seja, se for trabalhar somente com textos comuns, sem caracteres especiais (por exemplo, caracteres japoneses) ou algo do tipo, utilize os tipos de dados CHAR ou VARCHAR, considerando a questão de armazenamento que lhe falei anteriormente.

     

    Att.


    Erickson Ricci
    Microsoft MCP, MCTS SQL Server 2005, 2008
    Visite o meu blog: http://ericksonricci.wordpress.com
    Me siga no twitter: @EricksonRicci
    LinkedIN: http://br.linkedin.com/in/ericksonricci
    e-mail: ericksonfabricio@gmail.com
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    domingo, 23 de outubro de 2011 23:22