sexta-feira, 19 de fevereiro de 2010

Função em Delphi para Calcular a Distância Entre Dois Pares de Coordenadas (Latitude e Longitude)


Segue uma função para calcular a distância de dois pares de coordenadas em graus decimais, resultado é dado em quilômetros.
function calcDistancia(LatIni, LonIni, LatFim, LonFim: Extended): Extended;
var
 arcoA, arcoB, arcoC : Extended;
 auxPI : Extended;
begin
   auxPi := Pi / 180;

   arcoA := (LonFim - LonIni) * auxPi;
   arcoB := (90 - LatFim) * auxPi;
   arcoC := (90 - LatIni) * auxPi;

   // cos (a) = cos (b) . cos (c)  + sen (b) . sen (c) . cos (A)
   Result := Cos(arcoB) * Cos(arcoC) + Sin(arcoB) * Sin(arcoC) * Cos(arcoA);
   Result := (40030 * ((180 / Pi) * ArcCos(Result))) / 360;
end;

Como Saber a Quantidade de Registros Duplicados (SQL SERVER)


Uma forma de localizar registros duplicados no SQL é utilizar a instrução GROUP BY e HEAVING.
Vamos imaginar uma tabela chamada Clientes com o campo CPF e você queira saber a quantidade de CPF's duplicados, para isso digite a seguinte instrução :
 
SELECT CPF, COUNT(*) FROM Clientes
GROUP BY CPF
HAVING COUNT(*) > 1
 
Esta instrução ira retorna o CPF e a quantidade de registro que ele possui, porem ele só vai trazer os CPF que tem mais de uma ocorrência, isto devido a clausula HAVING COUNT(*) > 1.

terça-feira, 9 de fevereiro de 2010

Como Saber a Posição de uma Substring num Campo de uma Tabela (patindex)


Na linguagem SQL existe o comando patindex que retorna a posição inicial de uma substring em um campo, sua sintaxe é
patindex(substring,string);
    onde :
        substring é o texto que você está procurando, pode ser usado caracter coringa % para definir o inicio da pesquisa, idêntico ao uso do comando like;
        string é o texto ou nome do campo que você quer que ele localize a substring.
    O comando vai retornar a posição do primeiro caracter da substring ou 0 caso não encontre nada.