 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Qua Set 13, 2017 10:29 pm Assunto: sql nomes semelhantes [resolvido com ajuda do johnny-walker] |
|
|
Boa noite pessoa ...
Estou precisando de uma instrução sql que me traga os registros de um banco firebird que possuem nome similares ... assim.
José de Sousa
Jose de Souza
Pedro Alvares
Pedro Alvares Cabral
João da Silva
João Silva.
Desde já, agradeço qualquer ajuda.
Editado pela última vez por vilson.x em Seg Set 18, 2017 10:46 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Set 14, 2017 8:38 am Assunto: |
|
|
Talvez fique um pouco custoso para o banco dependendo do tamanho da sua tabela, mas pode resolver seu problema.
por exemplo o nome Jose de Souza, você pode procurar assim:
| Código: | SELECT *
FROM Pessoas
WHERE Nome LIKE '%Jose%Souza%' |
esse select vai retornar todos os nomes que contenham Jose e Souza |
|
| Voltar ao Topo |
|
 |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Qui Set 14, 2017 8:57 am Assunto: |
|
|
Bom dia leo_cj.
Obrigado por sua ajuda !!!
Ma minha situação é meio diferente. Vou explicar melhor.
Eu preciso achar no banco de dados os nomes que são semelhantes, eu não vou digitar o nome em um edit por exemplo. eu vou clicar em um botão e uma sql vai varrer meu banco e achar todos os nomes que são semelhantes.
Eu achei uma instrução para achar todos os nomes iguais (exatamente iguais). assim ...
| Código: | CommandText :=
' SELECT * FROM cadastro A INNER JOIN(SELECT CPF,' +
' Count (* ) As Ocorrencias' +
' FROM cadastro where STATUS_LIXEIRA like ' + STATUS_LIXEIRA_SN +
' GROUP BY CPF' +
' HAVING Count( *) > 1)B On (A.CPF = B.CPF) ORDER BY A.nome';
Open; |
neste caso esta encontrando as duplicidades de cpf, já consegui com este mesmo codigo encontrar as duplicidades de nome.
O caso agora e encontrar nomes semelhantes e não exatamente iguais ...
já tentei assim
On (A.CPF similar to B.CPF)
mas o efeito e o mesmo do sinal de ' = ', só encontra se for exatamente igual.
Só lembrando que uso FireBird.
Espero q ficou mais claro agora.
qualquer ajuda que puder me dar eu agradeço. |
|
| Voltar ao Topo |
|
 |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Sáb Set 16, 2017 9:44 am Assunto: |
|
|
Ninguem conhece uma instrução que possa me ajudar ???  |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
| Voltar ao Topo |
|
 |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Sáb Set 16, 2017 5:36 pm Assunto: |
|
|
Sim johnny-walker, já dei uma olhada. Mas é uma função do delphi e não uma instrução sql. Como eu usaria para fazer uma consulta sql no meu banco firebird ?
Pelo oq eu entendi, esta função poderia varrer meu banco de dados para verificar se uma pessoa já existe nele por fonema, tipo eu faria um loop no banco inteiro e verificaria cada registro pra ver se tem semelhança. Imagino que isto ficaria bem demorado. Outra coisa, se eu for pegar todas as duplicidades por semelhança eu teria q fazer dois loops, um para pegar o primeiro nome do meu banco e outro para verificar se tem outro nome com fonema semelhante, depois passar para o segundo nome e varrer o banco novamente ... Isso ficaria muito demorado.
Por isto eu achei melhor uma instrução sql que encontrasse estas duplicidades por semelhança. Esta sql que eu postei na msg anterior faz a busca por igualdade exata, e traz o resultado em segundos.
Existe o soundex para usar em instrução sql para outros bancos de dados pelo oq eu vi na net, mas para o firebird não tem, ou tem que instalar por UDF, eu li alguma coisa sobre isto, mas não tenho idéia de como se faz isto.
Existem também o utl_match.edit_distance_similarity para oracle, pelo oq eu li, seria oq eu preciso, mas só tem no oracle.
Se tiver uma idéia pra me ajudar neste sentido eu agradeço, mesmo que não seja instrução sql, mas que seja uma rotina que não demore muito e não consuma muitos recursos do servidor.
Desde já, agradeço !!!
EDITANDO.
Dei mais uma olhada na UDF soundex para instalar no fireBird, baixei os arquivos, segui as instruções mas não consegui instalar corretamente.
Se alguem puder me passar um passo a passo de como instalar esta UDF e como utiliza-la em instruções sql eu agradeço. |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Set 17, 2017 3:44 pm Assunto: |
|
|
Dê uma olhada nestes arquivos:
| Código: | /*
*
* The contents of this file are subject to the Initial
* Developer's Public License Version 1.0 (the "License");
* you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
* http://www.ibphoenix.com/idpl.html.
*
* Software distributed under the License is distributed on
* an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
*
* The Original Code was created by Claudio Valderama C. for IBPhoenix.
* The development of the Original Code was sponsored by Craig Leonardi.
*
* Copyright (c) 2001 IBPhoenix
* All Rights Reserved.
*/
/*This file defines the new udfs for firebird.*/
set sql dialect 3;
--FBUDF_API paramdsc* idNvl(paramdsc* v, paramdsc* v2)
declare external function invl
int by descriptor, int by descriptor
returns int by descriptor
entry_point 'idNvl' module_name 'fbudf';
--FBUDF_API paramdsc* idNvl(paramdsc* v, paramdsc* v2)
declare external function i64nvl
numeric(18,0) by descriptor, numeric(18,0) by descriptor
returns numeric(18,0) by descriptor
entry_point 'idNvl' module_name 'fbudf';
--FBUDF_API paramdsc* idNvl(paramdsc* v, paramdsc* v2)
declare external function dnvl
double precision by descriptor, double precision by descriptor
returns double precision by descriptor
entry_point 'idNvl' module_name 'fbudf';
--FBUDF_API paramdsc* sNvl(paramdsc* v, paramdsc* v2, paramdsc* rc)
declare external function snvl
varchar(100) by descriptor, varchar(100) by descriptor,
varchar(100) by descriptor returns parameter 3
entry_point 'sNvl' module_name 'fbudf';
--FBUDF_API paramdsc* iNullIf(paramdsc* v, paramdsc* v2)
declare external function inullif
int by descriptor, int by descriptor
returns int by descriptor
entry_point 'iNullIf' module_name 'fbudf';
--FBUDF_API paramdsc* dNullIf(paramdsc* v, paramdsc* v2)
declare external function dnullif
double precision by descriptor, double precision by descriptor
returns double precision by descriptor
entry_point 'dNullIf' module_name 'fbudf';
--FBUDF_API paramdsc* iNullIf(paramdsc* v, paramdsc* v2)
declare external function i64nullif
numeric(18,4) by descriptor, numeric(18,4) by descriptor
returns numeric(18,4) by descriptor
entry_point 'iNullIf' module_name 'fbudf';
--FBUDF_API paramdsc* sNullIf(paramdsc* v, paramdsc* v2, paramdsc* rc)
declare external function snullif
varchar(100) by descriptor, varchar(100) by descriptor,
varchar(100) by descriptor returns parameter 3
entry_point 'sNullIf' module_name 'fbudf';
--FBUDF_API char* DOW(ISC_DATE* v, char* rc)
declare external function dow
timestamp,
varchar(15) returns parameter 2
entry_point 'DOW' module_name 'fbudf';
--FBUDF_API char* SDOW(ISC_DATE* v, char* rc)
declare external function sdow
timestamp,
varchar(5) returns parameter 2
entry_point 'SDOW' module_name 'fbudf';
--FBUDF_API paramdsc* right(paramdsc*, short* rl, paramdsc* rc)
declare external function sright
varchar(100) by descriptor, smallint,
varchar(100) by descriptor returns parameter 3
entry_point 'right' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addDay(ISC_TIMESTAMP* v, int ndays)
declare external function addDay
timestamp, int
returns timestamp
entry_point 'addDay' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addWeek(ISC_TIMESTAMP* v, int nweeks)
declare external function addWeek
timestamp, int
returns timestamp
entry_point 'addWeek' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addMonth(ISC_TIMESTAMP* v, int nmonths)
declare external function addMonth
timestamp, int
returns timestamp
entry_point 'addMonth' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addYear(ISC_TIMESTAMP* v, int nyears)
declare external function addYear
timestamp, int
returns timestamp
entry_point 'addYear' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addMilliSecond(ISC_TIMESTAMP* v, int nseconds)
declare external function addMilliSecond
timestamp, int
returns timestamp
entry_point 'addMilliSecond' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addSecond(ISC_TIMESTAMP* v, int nseconds)
declare external function addSecond
timestamp, int
returns timestamp
entry_point 'addSecond' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addMinute(ISC_TIMESTAMP* v, int nminutes)
declare external function addMinute
timestamp, int
returns timestamp
entry_point 'addMinute' module_name 'fbudf';
--FBUDF_API ISC_TIMESTAMP* addHour(ISC_TIMESTAMP* v, int nhours)
declare external function addHour
timestamp, int
returns timestamp
entry_point 'addHour' module_name 'fbudf';
--It will work only with Win32 until it's ported to another OS.
--FBUDF_API ISC_TIMESTAMP* getExactTimestamp(ISC_TIMESTAMP* rc)
declare external function getExactTimestamp
timestamp returns parameter 1
entry_point 'getExactTimestamp' module_name 'fbudf';
--FBUDF_API paramdsc* fbtruncate(paramdsc* v, paramdsc* rc)
declare external function Truncate
int by descriptor, int by descriptor
returns parameter 2
entry_point 'fbtruncate' module_name 'fbudf';
--FBUDF_API paramdsc* fbtruncate(paramdsc* v, paramdsc* rc)
declare external function i64Truncate
numeric(18) by descriptor, numeric(18) by descriptor
returns parameter 2
entry_point 'fbtruncate' module_name 'fbudf';
--FBUDF_API paramdsc* fbround(paramdsc* v, paramdsc* rc)
declare external function Round
int by descriptor, int by descriptor
returns parameter 2
entry_point 'fbround' module_name 'fbudf';
--FBUDF_API paramdsc* fbround(paramdsc* v, paramdsc* rc)
declare external function i64Round
numeric(18, 4) by descriptor, numeric(18, 4) by descriptor
returns parameter 2
entry_point 'fbround' module_name 'fbudf';
--FBUDF_API paramdsc* power(paramdsc* v, paramdsc* v2, paramdsc* rc)
declare external function dPower
double precision by descriptor, double precision by descriptor,
double precision by descriptor
returns parameter 3
entry_point 'power' module_name 'fbudf';
--FBUDF_API blobcallback* string2blob(paramdsc* v, blobcallback* outblob)
declare external function string2blob
varchar(300) by descriptor,
blob returns parameter 2
entry_point 'string2blob' module_name 'fbudf';
|
| Código: |
/*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
* $Id: ib_udf.sql,v 1.4 2003/02/04 17:27:38 dimitr Exp $
* Revision 1.2 2000/11/28 06:47:52 fsg
* Changed declaration of ascii_char in ib_udf.sql
* to get correct result as proposed by Claudio Valderrama
* 2001.5.19 Claudio Valderrama, add the declaration of alternative
* substrlen function to handle string,start,length instead.
*
*/
/*****************************************
*
* a b s
*
*****************************************
*
* Functional description:
* Returns the absolute value of a
* number.
*
*****************************************/
DECLARE EXTERNAL FUNCTION abs
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';
/*****************************************
*
* a c o s
*
*****************************************
*
* Functional description:
* Returns the arccosine of a number
* between -1 and 1, if the number is
* out of bounds it returns NaN, as handled
* by the _matherr routine.
*
*****************************************/
DECLARE EXTERNAL FUNCTION acos
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_acos' MODULE_NAME 'ib_udf';
/*****************************************
*
* a s c i i _ c h a r
*
*****************************************
*
* Functional description:
* Returns the ASCII character corresponding
* with the value passed in.
*
*****************************************/
DECLARE EXTERNAL FUNCTION ascii_char
INTEGER
RETURNS CSTRING(1) FREE_IT
ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf';
/*****************************************
*
* a s c i i _ v a l
*
*****************************************
*
* Functional description:
* Returns the ascii value of the character
* passed in.
*
*****************************************/
DECLARE EXTERNAL FUNCTION ascii_val
CHAR(1)
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_ascii_val' MODULE_NAME 'ib_udf';
/*****************************************
*
* a s i n
*
*****************************************
*
* Functional description:
* Returns the arcsin of a number between
* -1 and 1, if the number is out of
* range NaN is returned.
*
*****************************************/
DECLARE EXTERNAL FUNCTION asin
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_asin' MODULE_NAME 'ib_udf';
/*****************************************
*
* a t a n
*
*****************************************
*
* Functional description:
* Returns the arctangent of a number.
*
*
*****************************************/
DECLARE EXTERNAL FUNCTION atan
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_atan' MODULE_NAME 'ib_udf';
/*****************************************
*
* a t a n 2
*
*****************************************
*
* Functional description:
* Returns the arctangent of the
* first param / the second param.
*
*****************************************/
DECLARE EXTERNAL FUNCTION atan2
DOUBLE PRECISION, DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_atan2' MODULE_NAME 'ib_udf';
/*****************************************
*
* b i n _ a n d
*
*****************************************
*
* Functional description:
* Returns the result of a binary AND
* operation performed on the two numbers.
*
*****************************************/
DECLARE EXTERNAL FUNCTION bin_and
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf';
/*****************************************
*
* b i n _ o r
*
*****************************************
*
* Functional description:
* Returns the result of a binary OR
* operation performed on the two numbers.
*
*****************************************/
DECLARE EXTERNAL FUNCTION bin_or
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf';
/*****************************************
*
* b i n _ x o r
*
*****************************************
*
* Functional description:
* Returns the result of a binary XOR
* operation performed on the two numbers.
*
*****************************************/
DECLARE EXTERNAL FUNCTION bin_xor
INTEGER, INTEGER
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_bin_xor' MODULE_NAME 'ib_udf';
/*****************************************
*
* c e i l i n g
*
*****************************************
*
* Functional description:
* Returns a double value representing
* the smallest integer that is greater
* than or equal to the input value.
*
*****************************************/
DECLARE EXTERNAL FUNCTION ceiling
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_ceiling' MODULE_NAME 'ib_udf';
/*****************************************
*
* c o s
*
*****************************************
*
* Functional description:
* The cos function returns the cosine
* of x. If x is greater than or equal
* to 263, or less than or equal to -263,
* a loss of significance in the result
* of a call to cos occurs, in which case
* the function generates a _TLOSS error
* and returns an indefinite (same as a
* quiet NaN).
*
*****************************************/
DECLARE EXTERNAL FUNCTION cos
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_cos' MODULE_NAME 'ib_udf';
/*****************************************
*
* c o s h
*
*****************************************
*
* Functional description:
* The cosh function returns the hyperbolic cosine
* of x. If x is greater than or equal
* to 263, or less than or equal to -263,
* a loss of significance in the result
* of a call to cos occurs, in which case
* the function generates a _TLOSS error
* and returns an indefinite (same as a
* quiet NaN).
*
*****************************************/
DECLARE EXTERNAL FUNCTION cosh
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_cosh' MODULE_NAME 'ib_udf';
/*****************************************
*
* c o t
*
*****************************************
*
* Functional description:
* Returns 1 over the tangent of the
* input parameter.
*
*****************************************/
DECLARE EXTERNAL FUNCTION cot
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_cot' MODULE_NAME 'ib_udf';
/*****************************************
*
* d i v
*
*****************************************
*
* Functional description:
* Returns the quotient part of the division
* of the two input parameters.
*
*****************************************/
DECLARE EXTERNAL FUNCTION div
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_div' MODULE_NAME 'ib_udf';
/*****************************************
*
* f l o o r
*
*****************************************
*
* Functional description:
* Returns a floating-point value
* representing the largest integer that
* is less than or equal to x
*
*****************************************/
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_floor' MODULE_NAME 'ib_udf';
/*****************************************
*
* l n
*
*****************************************
*
* Functional description:
* Returns the natural log of a number.
*
*****************************************/
DECLARE EXTERNAL FUNCTION ln
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_ln' MODULE_NAME 'ib_udf';
/*****************************************
*
* l o g
*
*****************************************
*
* Functional description:
* log (x,y) returns the logarithm
* base x of y.
*
*****************************************/
DECLARE EXTERNAL FUNCTION log
DOUBLE PRECISION, DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_log' MODULE_NAME 'ib_udf';
/*****************************************
*
* l o g 1 0
*
*****************************************
*
* Functional description:
* Returns the logarithm base 10 of the
* input parameter.
*
*****************************************/
DECLARE EXTERNAL FUNCTION log10
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_log10' MODULE_NAME 'ib_udf';
/*****************************************
*
* l o w e r
*
*****************************************
*
* Functional description:
* Returns the input string into lower
* case characters. Note: This function
* will not work with international and
* non-ascii characters.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION lower
CSTRING(80)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_lower' MODULE_NAME 'ib_udf';
/*****************************************
*
* l p a d
*
*****************************************
*
* Functional description:
* Appends the given character to beginning
* of the input string until length of the result
* string becomes equal to the given number.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION lpad
CSTRING(80), INTEGER, CSTRING(1)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf';
/*****************************************
*
* l t r i m
*
*****************************************
*
* Functional description:
* Removes leading spaces from the input
* string.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION ltrim
CSTRING(80)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';
/*****************************************
*
* m o d
*
*****************************************
*
* Functional description:
* Returns the remainder part of the
* division of the two input parameters.
*
*****************************************/
DECLARE EXTERNAL FUNCTION mod
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf';
/*****************************************
*
* p i
*
*****************************************
*
* Functional description:
* Returns the value of pi = 3.1459...
*
*****************************************/
DECLARE EXTERNAL FUNCTION pi
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_pi' MODULE_NAME 'ib_udf';
/*****************************************
*
* r a n d
*
*****************************************
*
* Functional description:
* Returns a random number between 0
* and 1. Note the random number
* generator is seeded using the current
* time.
*
*****************************************/
DECLARE EXTERNAL FUNCTION rand
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf';
/*****************************************
*
* r p a d
*
*****************************************
*
* Functional description:
* Appends the given character to end
* of the input string until length of the result
* string becomes equal to the given number.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION rpad
CSTRING(80), INTEGER, CSTRING(1)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_rpad' MODULE_NAME 'ib_udf';
/*****************************************
*
* r t r i m
*
*****************************************
*
* Functional description:
* Removes trailing spaces from the input
* string.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION rtrim
CSTRING(80)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf';
/*****************************************
*
* s i g n
*
*****************************************
*
* Functional description:
* Returns 1, 0, or -1 depending on whether
* the input value is positive, zero or
* negative, respectively.
*
*****************************************/
DECLARE EXTERNAL FUNCTION sign
DOUBLE PRECISION
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_sign' MODULE_NAME 'ib_udf';
/*****************************************
*
* s i n
*
*****************************************
*
* Functional description:
* Returns the sine of x. If x is greater
* than or equal to 263, or less than or
* equal to -263, a loss of significance
* in the result occurs, in which case the
* function generates a _TLOSS error and
* returns an indefinite (same as a quiet NaN).
*
*****************************************/
DECLARE EXTERNAL FUNCTION sin
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_sin' MODULE_NAME 'ib_udf';
/*****************************************
*
* s i n h
*
*****************************************
*
* Functional description:
* Returns the hyperbolic sine of x. If x is greater
* than or equal to 263, or less than or
* equal to -263, a loss of significance
* in the result occurs, in which case the
* function generates a _TLOSS error and
* returns an indefinite (same as a quiet NaN).
*
*****************************************/
DECLARE EXTERNAL FUNCTION sinh
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_sinh' MODULE_NAME 'ib_udf';
/*****************************************
*
* s q r t
*
*****************************************
*
* Functional description:
* Returns the square root of a number.
*
*****************************************/
DECLARE EXTERNAL FUNCTION sqrt
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_sqrt' MODULE_NAME 'ib_udf';
/*****************************************
*
* s u b s t r
*
*****************************************
*
* Functional description:
* substr(s,m,n) returns the substring
* of s which starts at position m and
* ending at position n.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
* Change by Claudio Valderrama: when n>length(s),
* the result will be the original string instead
* of NULL as it was originally designed.
*
*****************************************/
DECLARE EXTERNAL FUNCTION substr
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';
/*****************************************
*
* s u b s t r l e n
*
*****************************************
*
* Functional description:
* substr(s,i,l) returns the substring
* of s which starts at position i and
* ends at position i+l-1, being l the length.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION substrlen
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';
/*****************************************
*
* s t r l e n
*
*****************************************
*
* Functional description:
* Returns the length of a given string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION strlen
CSTRING(32767)
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
/*****************************************
*
* t a n
*
*****************************************
*
* Functional description:
* Returns the tangent of x. If x is
* greater than or equal to 263, or less
* than or equal to -263, a loss of
* significance in the result occurs, in
* which case the function generates a
* _TLOSS error and returns an indefinite
* (same as a quiet NaN).
*
*****************************************/
DECLARE EXTERNAL FUNCTION tan
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_tan' MODULE_NAME 'ib_udf';
/*****************************************
*
* t a n h
*
*****************************************
*
* Functional description:
* Returns the tangent of x. If x is
* greater than or equal to 263, or less
* than or equal to -263, a loss of
* significance in the result occurs, in
* which case the function generates a
* _TLOSS error and returns an indefinite
* (same as a quiet NaN).
*
*****************************************/
DECLARE EXTERNAL FUNCTION tanh
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'IB_UDF_tanh' MODULE_NAME 'ib_udf';
|
Como vê tem outros procedimentos a serem feitos para que dê certo, caso tenha dúvida sugiro o livro de helen borie que tem alguma coisa a respeito.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Dom Set 17, 2017 4:08 pm Assunto: |
|
|
johnny-walker
Eu olhei este arquivo e entendi que são instalações de varias funções no firebird, isso pelo pouco conhecimento que tenho rsrs.
Algumas da dll fbudf e outras da ib_udf.
Meu ingles não é la estas coisas, tentei com a ajuda do tradutor mas não consegui identificar qual delas tem a mesma função de soundex, ou seja, encontrar uma string por semelhança.
Vc consegue identificar qual delas é ???
Sobre os procedimentos de instalação que estão neste arquivo que vc passou, é mais ou menos oq eu fiz.
Declara a udf e a função que deseja usar, comita e já estaria disponível para o uso. Eu até fiz aquelas mudanças no firebird.conf que falei antes.
Não consegui achar algum procedimento a mais neste arquivo q eu não tenha feito. Desculpa se minhas orelhas de burro estão caindo na frente dos meus olhos e não to conseguindo enxergar ... rsrs
Da uma força ai plissss ... |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Set 18, 2017 7:04 pm Assunto: |
|
|
Mande uma mensagem via private message que vou lhe enviar uns arquivos que ensina a instalar a SoundexBR que tinha aqui e vi neste momento.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Seg Set 18, 2017 7:17 pm Assunto: |
|
|
johnny-walker você não vai acreditar ... Consegui fazer funcionar simplesmente desinstalando por completo o firebird 2.5 com o revouninstaler e reinstalando, mas antes eu copiei o arquivo firebird.conf, depois da instalação e antes de iniciar o firebird eu colei este aquivo na pasta firebird_2.5 e a dll do mv_soundex na pasta udf ... depois de colar estes dois arquivos eu iniciei o firebird e funcionou a função mv_soudex pelo ibexpert. Lembrando que eu já tinha parado o serviço do fierbird e reiniciado varias vz e não funcionou, só funcionou depois q eu desinstalei e reinstalei e coloquei os arquivos.
Não sei explicar o porque, mas funcionou !!!! |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|