Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2012
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
Select despues de caracter con sql

hola a todos como estan, espero que bien, necesito seleccionar datos de una columna despues de un caracter especifico en este caso la coma, por ejemplo dado los siguentes valores del campo nombre de mi tabla


CORONA TAVAREZ, RAQUEL EUNICE
PEREZ AGUILERA, ANA ERCILIA
QUEVEDO RAMIREZ, ESTEBAN

necesito seleccionar solo lo que esta despues de coma en este caso
RAQUEL EUNICE
ANA ERCILIA
ESTEBA

estoy utilizando sql server 2000, intenté utilizar la funcion substring pero no me sirve dado que los nombres varian en cuanto al largo de carateres.

gracias de antemano.
Responder Con Cita
  #2  
Antiguo 29-03-2012
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 ingmichel.

Probá con la funcion [ CHARINDEX ]


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-03-2012
iFoo iFoo is offline
Registrado
NULL
 
Registrado: nov 2011
Posts: 1
Poder: 0
iFoo Va por buen camino
Thumbs up Espero que te sirva

Prueba con esto.

function ParseSQL(textoE: String; delimitador: String): String;
var
fila: Integer;
index: Integer;
delta: Integer;
cadena: String;
textoS: String;
textoTMP: String;
begin
Result := EmptyStr;

fila := 0;
delta := Length(delimitador);
textoS := textoE + delimitador;

try
while Length(textoS) > 0 do
begin
index := Pos(delimitador, textoS);
cadena := Copy(textoS, 0, index - 1);
textoS := Copy(textoS, index + delta, MaxInt);

if (fila > 0) then
textoTMP := textoTMP + cadena + chr(13);

Inc(fila);
end;
finally
Result := textoTMP;
end;
end;

Para utlizar esta función, te doy un ejemplo, dentro de un boton colocas esto:

procedure TForm1.Button1Click(Sender: TObject);
var
textoE: String;
textoS: String;
begin
textoE:= 'CORONA TAVAREZ, RAQUEL EUNICE PEREZ AGUILERA, ANA ERCILIA QUEVEDO RAMIREZ, ESTEBAN';
textoS := ParseSQL(textoE, ',');

ShowMessage(textoS);
end;
Responder Con Cita
  #4  
Antiguo 30-03-2012
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
hola ecfisa

hola ecfisa gracias por responder, como utilizaria la funcion charindex ? ya que vi en la documentacion de sql que esta me devuelve un entero...

Cita:
Empezado por ecfisa Ver Mensaje
Hola ingmichel.

Probá con la funcion [ CHARINDEX ]


Saludos.
Responder Con Cita
  #5  
Antiguo 30-03-2012
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
Muchas Gracias

muchisimas gracias, he probado tu funcion y funciona muy bien, que dios te bendiga mi hermano y que viva delphi!!!

Cita:
Empezado por iFoo Ver Mensaje
Prueba con esto.

function ParseSQL(textoE: String; delimitador: String): String;
var
fila: Integer;
index: Integer;
delta: Integer;
cadena: String;
textoS: String;
textoTMP: String;
begin
Result := EmptyStr;

fila := 0;
delta := Length(delimitador);
textoS := textoE + delimitador;

try
while Length(textoS) > 0 do
begin
index := Pos(delimitador, textoS);
cadena := Copy(textoS, 0, index - 1);
textoS := Copy(textoS, index + delta, MaxInt);

if (fila > 0) then
textoTMP := textoTMP + cadena + chr(13);

Inc(fila);
end;
finally
Result := textoTMP;
end;
end;

Para utlizar esta función, te doy un ejemplo, dentro de un boton colocas esto:

procedure TForm1.Button1Click(Sender: TObject);
var
textoE: String;
textoS: String;
begin
textoE:= 'CORONA TAVAREZ, RAQUEL EUNICE PEREZ AGUILERA, ANA ERCILIA QUEVEDO RAMIREZ, ESTEBAN';
textoS := ParseSQL(textoE, ',');

ShowMessage(textoS);
end;
Responder Con Cita
  #6  
Antiguo 30-03-2012
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 ingmichel.

No uso MS SQLServer, pero en esta página tenés una explicación más clara y un ejemplo.

Por lo que pude hace una tarea similar a la función Pos de Delphi.

Supongo que para tu caso debería ser algo parecido a:
Código SQL [-]
 SELECT SUBSTRING(CPO_NOMBRE, CHARINDEX(',' ,CPO_NOMBRE)+1, LENGTH(CPO_NOMBRE))
 FROM TU_TABLA
Pero me es imposible comprobarlo.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 30-03-2012
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
gracias ecfisa he logrado hacerlo en mi sql 2000, pero ahora requiero hacer lo contrario, es decir seleccionar lo que esta antes de la coma, que funcion seria la indicada este caso ?


Cita:
Empezado por ecfisa Ver Mensaje
Hola ingmichel.

No uso MS SQLServer, pero en esta página tenés una explicación más clara y un ejemplo.

Por lo que pude hace una tarea similar a la función Pos de Delphi.

Supongo que para tu caso debería ser algo parecido a:
Código SQL [-]
 SELECT SUBSTRING(CPO_NOMBRE, CHARINDEX(',' ,CPO_NOMBRE)+1, LENGTH(CPO_NOMBRE))
 FROM TU_TABLA
Pero me es imposible comprobarlo.

Saludos.
Responder Con Cita
  #8  
Antiguo 30-03-2012
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
Cita:
Empezado por ingmichel Ver Mensaje
gracias ecfisa he logrado hacerlo en mi sql 2000, pero ahora requiero hacer lo contrario, es decir seleccionar lo que esta antes de la coma, que funcion seria la indicada este caso ?
Hola.

La misma.
Código SQL [-]
 SELECT SUBSTRING(CPO_NOMBRE, 1, CHARINDEX(',' ,CPO_NOMBRE))
 FROM TU_TABLA

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 30-03-2012
ingmichel ingmichel is offline
Miembro
 
Registrado: jun 2007
Posts: 137
Poder: 17
ingmichel Va por buen camino
Funciono perfecto

Hola ecfisa acabo de probar y efectivamente me funciono muy bien, eres un master gracias por tu importantisima ayuda me ha servido de mucho.

bendiciones.

Cita:
Empezado por ecfisa Ver Mensaje
Hola.

La misma.
Código SQL [-]
 SELECT SUBSTRING(CPO_NOMBRE, 1, CHARINDEX(',' ,CPO_NOMBRE))
 FROM TU_TABLA

Saludos.
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
Leer texto caracter a caracter kikecg Firebird e Interbase 11 23-11-2010 17:44:44
leer caracter por caracter, una linea de un memo douglas OOP 1 05-10-2007 06:59:31
Stored Procedure con un If después de un Select gluglu Conexión con bases de datos 12 08-08-2007 20:15:46
Ayudaaaa!!! Tabla ASCII: El carácter Ñ vs. carácter ¥ Berto2003 Varios 5 26-07-2005 15:37:48
¿Por qué CommitRetaining funciona después de agregar, pero no después de modificar? Al González Firebird e Interbase 7 16-02-2004 23:47:28


La franja horaria es GMT +2. Ahora son las 10:37:45.


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