Elimine todos los puntos de una cadena excepto el primero, con Oracle REGEXP_REPLACE
Frecuentes
Visto 6,712 veces
2
Quiero usar Oracle REGEXP_REPLACE para eliminar algunos puntos de una cadena. Tengo que eliminar del segundo punto si existe. Por ejemplo:
4 => 4
5 => 5
5.1 => 5.1
5.1.1 => 5.11
5.1.2 => 5.12
5.1.2.1 => 5.121
5.1.2.2 => 5.122
6 => 6
Tengo esta
select REGEXP_REPLACE(num, '(\d+)(\.)(\d+)(\.)(\d+)', '\1.\3\5')
from my_table;
el problema es que mi consulta se hace solo por dos puntos. Si la cadena tiene más de dos puntos, tengo que modificar la consulta para aceptar más puntos y así. ¿Hay alguna manera de hacer esto automáticamente?
Muchas Gracias
2 Respuestas
2
Una posible solución "sucia"
select REGEXP_REPLACE(num, '(\d+)(\.)(.*)', '\1\2') ||
REPLACE( REGEXP_REPLACE(num, '(\d+)(.*)', '\2') ,'.','')
from my_table;
y aunque no está nada claro, funciona.
Respondido el 12 de junio de 12 a las 19:06
1
SELECT SUBSTR(mystr, 1, INSTR(mystr,'.'))
|| REPLACE(SUBSTR(mystr, INSTR(mystr,'.')+1),'.')
FROM my_table;
Respondido el 13 de junio de 12 a las 08:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas oracle plsql or haz tu propia pregunta.