Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2009
Avatar de gasparsi
gasparsi gasparsi is offline
Miembro
 
Registrado: nov 2006
Ubicación: Salina Cruz, Oax. Mex.
Posts: 27
Poder: 0
gasparsi Va por buen camino
Question cortar una subcadena al encontrar una coincidencia

Hola a todos:

Necesito de su orientación en lo siguiente:

tengo una tabla de articulos que en el campo descripcion contiene información como: articulo de ejemplo 12/350ml, en algunos es: articulo de ejemplo c/suavizante 20/500ml, o tambien puede ser: otro articulo de ejemplo 25/12/15gr. Quiero saber como hacer para poder quitar lo que está antes del gramaje y pasarlo a otra tabla.

El resultado debe quedar asi:
Tabla1, campo descripcion:
articulo de ejemplo
articulo de ejemplo c/suavizante

otro articulo de ejemplo

tabla2, campo x:
12/350ml
20/500ml

25/12/15gr

Ya estuve revisando las funciones para cadenas, pero la verdad no se me ocurre cómo localizar la parte del gramaje en el string, ya que los numeros varian de producto en producto.

También ya traté con las funciones regexp y like en mysql, pero no veo como usarlas para sustraer las subcadenas que deseo.

Agradeceré cualquier orientación que me puedan dar.

Estoy usando Mysql 5 y Delphi 2009.

Saludos
Responder Con Cita
  #2  
Antiguo 15-03-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

Lo primero sería determinar qué regla(s) tienen esos valores. Es decir, qué patrón sintáctico aplica a todos, a casi todos, o a la mayoría de las descripciones compuestas.

Preguntas para llegar a esa determinación:

¿Todas terminan con la unidad de medida expresada en letras minúsculas, tras un valor numérico entero y sin espacios entre ese valor y la unidad de medida?

En caso de que el artículo tenga presentaciones en varias medidas, ¿éstas siempre se separan con una diagonal y sin espacios? ¿O podrían ser "25 / 12 / 15", "25,12,15", "25-12-15", etc.?

¿Existen artículos que no tienen una medida numérica en su descripción?

Además de las respuestas a esas preguntas, creo que mostrarnos una nutrida lista de ejemplos reales distintos también ayudaría.

Gracias.

Al González.
Responder Con Cita
  #3  
Antiguo 15-03-2009
Avatar de gasparsi
gasparsi gasparsi is offline
Miembro
 
Registrado: nov 2006
Ubicación: Salina Cruz, Oax. Mex.
Posts: 27
Poder: 0
gasparsi Va por buen camino
Unhappy ejemplos de descripcion

Gracias Al por responder.

A continuación te doy un ejemplo de como son algunas de las descripciones que hay en la tabla:

ARROZ SOS SALVAJE + VAPORIZADO 12/170 GR
ARROZ SOS ROJO LARGO 12/1 KG
SUPER SERIE III SAE MULTIGRADO 15W40 DIESEL C/19 LT
ARROZ SOS PRECOCIDO 12/1 KG.
ARROZ SOS SUSHI 12/1 KG.
ACITE DE OLIVA CARBONELL LATA 24/200 ML
ACITE DE OLIVA CARBONELL LATA 12/1 LT
ACEITE DE OLIVA CARBONELL 3/3 LT
GALLETA MARIA TOSTA RICA 22/200 GR
GALLETA MARIA FLOW TOSTA RICA 21/3X200 GR
BARQUILLO TOSTA RICA FRESA 10/220 GR
BARQUILLO TOSTA RICA VAINILLA 10/220 GR
GALLETA MARIA FLOW PACK TOSTA RICA 12/5X200 GR
GUANTE LATEX ROJO T-7
REP. TRAPEADOR DE TIRAS

El detalle es que estoy queriendo normalizar mi base de datos, para ello quiero poner en una tabla los datos generales del producto, entre ellas solo la descripcion sin gramaje, y en otra las presentaciones, pza, caja, exhibidor con sus datos especificos; pero me topo con este problema que no tiene una regla sintactica por donde entrarle a la solución.

Ojalá me ayudes a encontrar la respuesta.
Gracias
Responder Con Cita
  #4  
Antiguo 15-03-2009
Avatar de gasparsi
gasparsi gasparsi is offline
Miembro
 
Registrado: nov 2006
Ubicación: Salina Cruz, Oax. Mex.
Posts: 27
Poder: 0
gasparsi Va por buen camino
Red face lo que hice en mysql

Al:

Te comento, esta es la instruccion que puse en mysql:
Código SQL [-]
SELECT * FROM articulos where descripcion regexp '[.0-9./0-9.*]'

con esta instruccion trato de encontrar las coincidencias como por ejemplo 99/99xx y de esta manera separar un tanto que tengan algo en comun, pero hasta ahi me quedo, ya que no se como podria cortar texto hasta antes de la coincidencia.

Saludos
Responder Con Cita
  #5  
Antiguo 15-03-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Creo que antes de empezar a programar debes terminar de analizar el caso.

¿Hasta cuántos y cuáles datos pueden estar contenidos en estas descripciones? Por ejemplo, ¿"ACITE DE OLIVA CARBONELL LATA 24/200 ML" son tres, cuatro o cinco datos? ('ACITE DE OLIVA CARBONELL', 'LATA', 24, 200, ML) ¿Qué significa ese 24? ¿24 unidades por caja...?

¿Los datos entonces serían nombre, presentación, unidades por empaque, tamaño y unidad de medida? ¿O da igual que los dos primeros vayan juntos?

Tomando los ejemplos que nos has dado, identifico una posible regla sintáctica:

Todas, casi todas o la gran mayoría de las descripciones que llevan un tamaño ("gramaje") y unidad de medida, contienen una diagonal seguida por un dígito decimal (12/170 GR, C/19 LT, 12/5X200 GR) ¿Es correcta la afirmación?

¿Qué significa esa X en "12/5X200"? Entiendo que es un "por", pero ¿cómo influye en la estructura de datos que estamos analizando?

Otra pregunta, ¿es posible que existan descripciones con más de una diagonal o que ésta no forme parte del dato que indica el tamaño? Por ejemplo:

"Chocolate Nicklaus Wirth 1/4 de leche 12/150 GR".

Esperamos sin prisa tu retroalimentación.
Responder Con Cita
  #6  
Antiguo 15-03-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Me da la impresión que no tiene arreglo, al menos automático, creo haber topado con un caso similar y tuve que hacer:
1.- Poner un DbEdit mostrado el campo.
2.- Al pulsar el usuario sobre el último caracter válido cortaba por ahí el nombre, Copy(Cadena, Inicio, cuantos);

3.- Esto se iba guardando en una nueva tabla, luego como se supone que estos productos tienen un código único el resto no es dificil de solucionar.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 16-03-2009
Avatar de gasparsi
gasparsi gasparsi is offline
Miembro
 
Registrado: nov 2006
Ubicación: Salina Cruz, Oax. Mex.
Posts: 27
Poder: 0
gasparsi Va por buen camino
Smile gracias por sus respuestas

Gracias Al y marcos pos sus respuestas:

El análisis que propones Al es de bastante ayuda, en realidad tendría que hacer eso si deseo tener bien normalizada mi base de datos, el numero que precede a la diagional tambien es muy buen punto, pero el caso del chocolate es muy cierto y sí, tengo ese problema en algunas descripciones, además de otros casos raros.

La propuesta de marcos acerca de posicionar el cursor en el lugar que se desee cortar la cadena me parece lo más rápido para la solución, ya que me estan presionando en la entrega de estas tablas. Voy a intentar esa solución, no muy elegante, pero al menos un poco más rápida.

Les cuento como me fue, en cuanto termine.

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Encontrar ultima ocurrencia de subcadena hmoner Varios 6 01-09-2008 16:20:42
Cualquier parecido con la realidad es coincidencia eduarcol Humor 0 06-09-2007 18:51:42
Coincidencia?? vtdeleon Debates 2 28-04-2006 13:43:17
...sospechosa coincidencia... Jure Noticias 3 17-07-2005 17:08:11
Como busco una subcadena con like DarkMedel SQL 2 20-02-2004 14:46:21


La franja horaria es GMT +2. Ahora son las 06:33:22.


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