Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/05/2011, 08:14
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Reemplazar o borrar un "str" de un "str_list"

Hola mikexloo:

No encontré alguna otra manera más corta de hacer lo que pides, igual y a alguien más se le puede ocurrir algo mejor, o tal como lo comenta el compañero huesos52 si estás trabajando con algún lenguaje de programación podrías hacerlo desde ahí en lugar de hacerlo en MySQL.

Por lo pronto te explico lo del 2 y el -2.

Supongamos que tienes esta cadena de entrada:

Código:
4,6,1,9,18
El prime paso es agregar una coma al inicio y al fin de la cadena, de tal manera que te quede esto:

Código:
,4,6,1,9,18,
Ahora si, con esta cadena "eliminas" el elemento que deseas, el cual debe estar entre comas, por lo tanto la función replace quedaría así:

Código MySQL:
Ver original
  1. mysql> select replace(',4,6,1,9,18,', ',1,', ',');
  2. +-------------------------------------+
  3. | replace(',4,6,1,9,18,', ',1,', ',') |
  4. +-------------------------------------+
  5. | ,4,6,9,18,                          |
  6. +-------------------------------------+
  7. 1 row in set (0.00 sec)

Ahora si, viene la parte del 2 y el -2, si observas la cadena resultante contiene una coma al inicio y al final de la cadena, por lo tanto hay que eliminarlas. lo que haces es un substring de su cadena tomando los caracteres a partir de la posición 2, y para calcular la longitud de la cadena resultante obtienes la longitud de la cadena original -2 (es decir, sin las dos comas). en otras palabras sería algo como esto:

Código MySQL:
Ver original
  1. mysql> select substring(',4,6,9,18,', 2, 8);
  2. +-------------------------------+
  3. | substring(',4,6,9,18,', 2, 8) |
  4. +-------------------------------+
  5. | 4,6,9,18                      |
  6. +-------------------------------+
  7. 1 row in set (0.00 sec)

Código:
Longitud(',4,6,9,18,') - 2 -> 10 - 2 = 8
Espero que con esta explicación haya quedado más claro lo que hice, ojalá que te pueda servir y esperemos que alguien tenga algo mejor.

Saludos.
Leo