Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2014
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Buscar Valor dentro de una Cadena

Saludos


Me gustaría saber si existe alguna función de Firebir que me permita buscar un valor dentro de una cadena de caracteres es decir lo mismo que hace la Función POS de Delphi.

Nota: es para usarla dentro de un Procedimiento Almacenado no para buscar datos ya que probé con la Función "Position" y no compila

Uso Firebid 2.1
Responder Con Cita
  #2  
Antiguo 10-09-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Si solo necesitas saber si contiene la cadena, puedes probar con LIKE
Código SQL [-]
cadena = 'ESTO ES UNA PRUEBA DE CADENAS';
resultado_contiene = '';
resultado_empieza = '';
resultado_termina =  '';

if (cadena like '%PRUEBA%') then
   resultado_contiene = 'CONTIENE PRUEBA';
else
   resultado_contiene = 'NO CONTIENE PRUEBA';

if (cadena like 'PRUEBA%') then
   resultado_empieza = 'EMPIEZA CON LA PALABRA PRUEBA';
else
   resultado_empieza = 'NO EMPIEZA CON LA PALABRA PRUEBA';

if (cadena like '%PRUEBA') then
   resultado_termina = 'TERMINA CON LA PALABRA PRUEBA';
else
   resultado_termina = 'NO TERMINA CON LA PALABRA PRUEBA';

Código SQL [-]
/* Busca todos los clientes que contengan GOMEZ en el nombre sin tener en cuenta mayúsculas o minúsculas */
select * from clientes
where upper(nombre) like '%GOMEZ%'

Última edición por duilioisola fecha: 10-09-2014 a las 19:41:16.
Responder Con Cita
  #3  
Antiguo 10-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
También con containing que encuentra ya esté en mayúsculas o minúsculas, al principio, enmedio o al final, sin tener que especificar nada.
Responder Con Cita
  #4  
Antiguo 11-09-2014
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Gracias por sus aportes

Amigo duilioisola probare esta opción ya que es la que se parece mas a lo que necesito...

Amigo Casimiro Notevi la instruccion containing funciona con clausalas SELECT ... yo la necesito para comprar 2 variables dentro de un Procedimiento almacenado

Avisare los resultados
Responder Con Cita
  #5  
Antiguo 11-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Efren2006
Cita:
Empezado por Efren2006 Ver Mensaje
Amigo Casimiro Notevi la instruccion containing funciona con clausalas SELECT ... yo la necesito para comprar 2 variables dentro de un Procedimiento almacenado
Pues a mi me funciona muy bien sin usar SELECT...
Código SQL [-]
SET TERM ^;

CREATE OR ALTER PROCEDURE PR_CONTAINING(
  SUBSTR VARCHAR(255), STR VARCHAR(255))
RETURNS (
  RESULT SMALLINT)
AS
BEGIN
  IF (STR CONTAINING(SUBSTR)) THEN
    RESULT = 1;
  ELSE
    RESULT = 0;
  SUSPEND;
END^

SET TERM ;^

De todos modos Firebird 2.1 ya cuenta con la función POSITION() que creo hace lo que buscas.
Código SQL [-]
SELECT POSITION('PERRO' in 'EL VIEJO PERRO DE JUAN') FROM RDB$DATABASE

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 11-09-2014
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Efren2006


Pues a mi me funciona muy bien sin usar SELECT...
Código SQL [-]
SET TERM ^;

CREATE OR ALTER PROCEDURE PR_CONTAINING(
  SUBSTR VARCHAR(255), STR VARCHAR(255))
RETURNS (
  RESULT SMALLINT)
AS
BEGIN
  IF (STR CONTAINING(SUBSTR)) THEN
    RESULT = 1;
  ELSE
    RESULT = 0;
  SUSPEND;
END^

SET TERM ;^

De todos modos Firebird 2.1 ya cuenta con la función POSITION() que creo hace lo que buscas.
Código SQL [-]
SELECT POSITION('PERRO' in 'EL VIEJO PERRO DE JUAN') FROM RDB$DATABASE

Saludos
Amigo ecfisa Tienes razon fue un error mio en la implementación de la función CONTAINING

Perdona Casimiro Notevi tu aporte fue el acertado..

Gracias a ambos por el aporte esto era exactamente lo que necesitaba
Responder Con Cita
  #7  
Antiguo 11-09-2014
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje

De todos modos Firebird 2.1 ya cuenta con la función POSITION() que creo hace lo que buscas.
Código SQL [-]
SELECT POSITION('PERRO' in 'EL VIEJO PERRO DE JUAN') FROM RDB$DATABASE

Saludos
Se me olvidaba comentar la Función POSITION NO funciona dentro de los Procedimientos Almacenados.... Pero SI en consultas
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
buscar una palabra dentro de una cadena Patricio Varios 2 31-12-2010 10:48:33
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Buscar un palabra dentro de una cadena eyscom Varios 6 29-07-2006 00:05:05
buscar dentro de una cadena con repetición jzginez Varios 4 12-05-2006 21:40:18
Buscar cadena dentro de otra cadena doverzhoff Varios 4 27-01-2004 05:27:15


La franja horaria es GMT +2. Ahora son las 11:59:23.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi