locked
PROBLEMA NA COMPARAÇÃO DE STRINGS !!!! RRS feed

  • Pergunta

  • Estou tentando comparar strings via lookup, a base esta da seguinte forma:

    Entrada 1 (LEFT)
    Logradouro = RUA JACUI , Complemento = CASA 03,  Num_Endereco = 579

    Entrada 2
    Logradouro = RUA JACUI , Complemento = CASA 03,  Num_Endereco = 579, Sk_Endereco= 55555

    O join é feito por todos os campos recuperando a SK.
    No momento da recupação da Sk_Endereço os SSIS retorna NULL como valor.
    Dei um UPPER nos campos e retirei os acentos e mesmo assim o problema continua.

    Alguem sabe onde esta o problema ?
    quinta-feira, 20 de setembro de 2012 14:51

Respostas

  • Fazer comparações em strings deste tipo é complicado, por que qualquer espaço ja faz diferença, tente usar o ltrim(rtrim(campo)) nos campos que fazem o join, pode ser que tenha espaço no inicio ou no fim dos campos.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 20 de setembro de 2012 14:53
  • o unico jeito que conheço seria o update manual ou usando o replace...

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 20 de setembro de 2012 18:05

Todas as Respostas

  • Fazer comparações em strings deste tipo é complicado, por que qualquer espaço ja faz diferença, tente usar o ltrim(rtrim(campo)) nos campos que fazem o join, pode ser que tenha espaço no inicio ou no fim dos campos.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 20 de setembro de 2012 14:53
  • Tentei fazer isso, não deu..

    Estranho que agora testo o join em campos separados e da certo, mas qdo eu faço o join somente pelo num_endereco retorna null.

    Não estou entendendo pq isso ta acontecendo....

    quinta-feira, 20 de setembro de 2012 15:16
  • este campo esta como numerico ou string ? tente fazer o join utilizando o replace de espaço em branco por nada nos campos ao inves do ltrimrtirm para comparar sem os espaços entre palavras, replace(campo1,' ','') = replace(campo2,' ','')

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 20 de setembro de 2012 16:05
  • Alexandre,

    Eu dei um Rtrim e Ltrim e resolveu, porem para tirar os acentos eu no select collate sql_latin1_general_cp1251_ci_as

    Porem apareceu um problema:

    BECO JOANA D'ARC VIROU BECO JOANA D?ARC

    Como faço para remover esses caracteres especiais ?

    quinta-feira, 20 de setembro de 2012 16:17
  • Phillipe, primeiramente voce precisa identificar onde estão estes caracteres especiais, faça como no exemplo abaixo, criei uma tabela teste e inseri uma linha ok e 2 com caracteres especiais, depois faço o select na tabela no campo like '%[^A-Z^]%', isto retornará todos os registros que tenham caracteres que não estão de "A a Z", depois de identificados voce pode fazer um update utilizando o replace destes campos por nada '' ou algo que voce queira.

    create table teste (teste varchar(100))
    
    insert into teste
    values ('Nome'),
    		('Nome' + Char(39)),
    		('Nome?')
    		
    select * from teste where teste like '%[^A-Z^]%'


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 20 de setembro de 2012 16:31
  • Alexandre, identifiquei o problema, eu não posso usar collate sql_latin1_general_cp1251_ci_as no campo Complementro_Endereço pois existe muitos registros com APTO Nº e quando isso acontece é colocando um '?' entao eu retirei ...

    Sobrou agora poucos registros que não batem no Join, pois estão acentuados. No derived column tem jeito de retirar acentos ?

    Tenho que retirar acento da palavra sem usar collation ou replace, pois o filtro esta em um where e não tem como usar o replace para tira á, é, í â etc ...

    quinta-feira, 20 de setembro de 2012 17:57
  • o unico jeito que conheço seria o update manual ou usando o replace...

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 20 de setembro de 2012 18:05