Comparando dados de cadeia de caracteres

Comparações de cadeia de caracteres são uma parte importante de muitas das transformações realizadas pelo Integration Services e as comparações de cadeia de caracteres também são usadas na avaliação de expressões em variáveis e expressões de propriedade. Por exemplo, a transformação de Classificação compara valores em um conjunto de dados para classificar dados em ordem crescente ou decrescente.

Dependendo dos dados e da configuração da transformação, o seguinte processamento pode ocorrer durante a comparação dos dados da cadeia de caracteres:

  • Convertendo dados em Unicode. Se os dados de origem ainda não forem Unicode, eles serão convertidos automaticamente para Unicode antes da comparação ocorrer.

  • Usando a localidade para aplicar regras específicas de localidades para interpretar data, hora, dados decimais e ordem de classificação.

  • Aplicando opções de comparação no nível de coluna para alterar a sensibilidade das comparações.

As transformações Classificar, Agregar, Agrupamento Difuso e Pesquisa Difusa podem ser personalizadas para alterar a maneira que as cadeias de caracteres são comparadas no nível da coluna. Por exemplo, é possível especificar que uma comparação ignore caixas altas e baixas, o que significa que os caracteres maiúsculos e minúsculos são tratados da mesma forma.

As seguintes transformações usam expressões que podem incluir comparações de cadeias de caracteres.

  • A transformação Divisão Condicional pode usar comparações de cadeia de caracteres em expressões para determinar para qual saída enviar a linha de dados. Para obter mais informações, consulte Transformação Divisão Condicional.

  • A transformação de Coluna Derivada pode usar comparações de cadeias de caracteres em expressões para gerar novos valores de coluna. Para obter mais informações, consulte Transformação Coluna Derivada.

Variáveis, mapeamentos de variáveis e restrições de precedência também usam expressões que podem incluir comparações de cadeias de caracteres. Para obter mais informações sobre expressões, consulte Referência de Expressão do Integration Services.

Convertendo os dados da cadeia de caracteres para Unicode

Dependendo das operações que a transformação realiza e a configuração da transformação, os dados da cadeia de caracteres podem ser convertidos no tipo de dados DT_WSTR, que é uma representação Unicode dos caracteres da cadeia de caracteres.

Dados da cadeia de caracteres que possuem o tipo de dados DT_STR são convertidos em Unicode usando a página de código da coluna. O Integration Services suporta páginas de código no nível da coluna e cada coluna pode ser convertida usando uma página de código diferente.

Na maioria dos casos, o Integration Services pode identificar a página de código correta da origem de dados. Por exemplo, no SQL Server é possível definir um agrupamento nos níveis do banco de dados e da coluna. A página de código é derivada de um agrupamento do SQL Server, que pode ser um agrupamento do Windows ou do SQL. Para obter mais informações, consulte Trabalhando com agrupamentos.

Se o Integration Services fornecer uma página de código inesperada ou se o pacote acessar uma origem de dados usando um provedor que não fornece informações suficientes para determinar a página de código correta, você poderá especificar uma página de código padrão na origem OLE DB e no destino OLE DB. As páginas de código padrão são usadas em vez das páginas de código fornecidas pelo Integration Services.

Os arquivos não têm páginas de código. Ao invés disso, os gerenciadores de conexões de Arquivo Simples e de Vários Arquivos Simples usados por um pacote para conectar aos dados de arquivo incluem uma propriedade para especificar a página de código do arquivo. A página de código pode ser definida apenas no nível de arquivo, não no nível da coluna.

Configuração de localidade

O Integration Servicesnão usa a página de código para inscrever regras específicas de localidades para classificar dados ou interpretar data, hora e dados decimais. Ao invés disso, a transformação lê a localidade definida pela propriedade LocaleId no componente de fluxo de dados, tarefa de Fluxo de Dados, contêiner ou pacote. Por padrão, a localidade de uma transformação é herdada de sua tarefa de Fluxo de Dados, que, por sua vez, herda do pacote. Se a tarefa de Fluxo de Dados estiver em um contêiner como o Loop For, ela herdará sua localidade do contêiner.

Também é possível especificar uma localidade para o gerenciamento de conexões de Arquivo Simples e um gerenciador de conexões de Vários Arquivos Simples.

Definindo opções de comparação

A localidade fornece as regras básicas para comparar dados de cadeia de caracteres. Por exemplo, a localidade especifica a posição de classificação de cada letra no alfabeto. No entanto, essas regras podem não ser suficientes para as comparações que algumas transformações realizam e o Integration Services oferece suporte a um conjunto de opções de comparação avançadas que vão além das regras de comparação de uma localidade. Estas opções de comparação são definidas no nível da coluna. Por exemplo, um das opções de comparação permite que você ignore caracteres de não espaçamento. O efeito dessa opção é ignorar diacríticos como o acento, que torna "a" e "á" idênticos para fins de comparação.

A seguinte tabela descreve as opções de comparação e um estilo de classificação.

Opção de comparação

Descrição

Ignora maiúsculas e minúsculas

Especifica se a comparação faz distinção entre letras maiúsculas e minúsculas. Se esta opção for definida, a comparação de cadeia de caracteres ignorará a distinção entre letras maiúsculas e minúsculas. Por exemplo, "ABC" torna-se igual a "abc".

Ignora o tipo kana

Especifica se a comparação distingue os dois tipos de caracteres de kana japoneses: hiragana e katakana. Se esta opção for definida, a comparação de cadeia de caracteres ignorará o tipo de kana usado.

Ignora largura do caractere

Especifica se a comparação faz distinção entre um caractere de byte único e o mesmo caractere representado como um caractere de byte duplo. Se esta opção for definida, a comparação de cadeia de caracteres tratará representações de byte único e representações de byte duplo do mesmo caractere como idênticas.

Ignora caracteres de não espaçamento

Especifica se a comparação distingue entre caracteres de espaço e sinais diacríticos. Se esta opção for definida, a comparação ignorará os sinais diacríticos. Por exemplo, "å" é igual a "a".

Ignora símbolos

Especifica se a comparação faz distinção entre caracteres de letra e símbolos como caracteres de espaço em branco, pontuação, símbolos monetários e matemáticos. Se esta opção estiver definida, a comparação de cadeia de caracteres ignorará símbolos. Por exemplo, " Nova Iorque" se torna igual a "Nova Iorque" e "* ABC" é o mesmo que "ABC" '.

Classificar pontuação como símbolos

Especifica se a comparação classifica todos os símbolos de pontuação, menos o hífen e o apóstrofe, antes dos caracteres alfanuméricos. Por exemplo, se esta opção for definida, ".ABC" será classificada antes de "ABC."

As transformações Classificação, Agregar, Agrupamento Difuso e Pesquisa Difusa incluem estas opções para comparar dados.

O sinalizador de comparação FullySensitive é exibido na caixa de diálogo Editor Avançado para as transformações Agrupamento Difuso e Pesquisa Difusa. Selecionar o sinalizador de comparação FullySensitive significa que todas as opções de comparação se aplicam.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.