FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
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 |
#2
|
||||
|
||||
¡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. |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
lo que hice en mysql
Al:
Te comento, esta es la instruccion que puse en mysql:
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 |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
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:
|
|
|
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 |
|