none
Diferença entre Latin1_General_CI_AS e SQL_Latin1_General_CP1_CI_AS RRS feed

  • Pergunta

  • Pessoal,

    Estou tentando verificar na prática qual a diferença entre estou dois collate, mas confesso que não entendi. Vejam:

    SELECT case when ('ab' COLLATE SQL_Latin1_General_CP1_CI_AS) > ('a-b' COLLATE SQL_Latin1_General_CP1_CI_AS) then 0 else 1 end
    SELECT case when ('ab' COLLATE Latin1_General_CI_AS) > ('a-b' COLLATE Latin1_General_CI_AS) then 0 else 1 end

    -----------
    0

    (1 row(s) affected)

    -----------
    1

    (1 row(s) affected)

    Já aqui não mudou nada na ordenação:

    create table #Collation1 (  
    Campo1 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS)
    go
    insert into #Collation1 values ('-a-b')
    go
    insert into #Collation1 values ('a-b')
    go
    insert into #Collation1 values ('a-b-')
    go
    insert into #Collation1 values ('-')
    go
    insert into #Collation1 values (' ')
    go
    select *
     from #Collation1  order by 1
    go

    create table #Collation2 (  
    Campo1 varchar(50) COLLATE Latin1_General_CI_AS)
    go
    insert into #Collation2 values ('-a-b')
    go
    insert into #Collation2 values ('a-b')
    go
    insert into #Collation2 values ('a-b-')
    go
    go
    insert into #Collation2 values ('-')
    go
    insert into #Collation2 values (' ')
    go
    select *
     from #Collation2 order by 1
    go

    drop table #Collation1
    go
    drop table #Collation2
    go

    Resultado:

    Campo1
    --------------------------------------------------
     
    -
    -a-b
    a-b
    a-b-

    Campo1
    --------------------------------------------------
     
    -
    -a-b
    a-b
    a-b-


    Alguém saberia explicar o que muda de fato ?

    Latin1_General_CI_AS  
    Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive

    SQL_Latin1_General_CP1_CI_AS 
    Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive for Unicode Data, SQL Server Sort Order 52 on Code Page 1252 for non-Unicode Data


    Felipe Souza Rasche
    segunda-feira, 1 de junho de 2009 15:36

Respostas

  • Felipe,

    Na verdade estes dois collate são muito parecidos, a questão é que o SQL_Latin_General_CPI_CI_AS, se não estou enganado é um collate existente desde a versão 6.5 ou 7.

    Por questões de compatibilidade com versões anteriores a Microsoft manteve.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 1 de junho de 2009 18:11

Todas as Respostas

  • Acredito que não muda nada.. o de baixo é apenas para manter a compatibilidade com outras versões do SQL
    segunda-feira, 1 de junho de 2009 15:49
  • Acredito que algumas regiões o "-" vem antes do "a" e em outras o contrário
    se vc fizer isto vai notar a diferença:
    create table #Collation1 (Campo1 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS)
    go
    insert into #Collation1 values ('-a-b')
    insert into #Collation1 values ('a-b')
    insert into #Collation1 values ('ab')
    insert into #Collation1 values ('-')
    insert into #Collation1 values (' ')
    go
    select * from #Collation1  order by Campo1 
    go
    
    create table #Collation2 (Campo1 varchar(50) COLLATE Latin1_General_CI_AS)
    go
    insert into #Collation2 values ('-a-b')
    insert into #Collation2 values ('a-b')
    insert into #Collation2 values ('ab')
    insert into #Collation2 values ('-')
    insert into #Collation2 values (' ')
    go
    select * from #Collation2 order by Campo1 
    go
    
    drop table #Collation1
    go
    drop table #Collation2


    att
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    segunda-feira, 1 de junho de 2009 16:08
    Moderador
  • Felipe,

    Na verdade estes dois collate são muito parecidos, a questão é que o SQL_Latin_General_CPI_CI_AS, se não estou enganado é um collate existente desde a versão 6.5 ou 7.

    Por questões de compatibilidade com versões anteriores a Microsoft manteve.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 1 de junho de 2009 18:11